iOS-示例中的协议和委托

2024-04-24

好吧,我正在寻找,但没有任何方法对我有用。以下代码基于许多教程和苹果文档,但我无法让它工作。有人可以帮忙吗?

代码崩溃于: obj.delegatee = self; (在 B.h 类中),respondsToSelector 和 PerformSelector:withObject 方法也无法被识别。

我想设置委托对象,当我们点击特定图片时,该对象上会调用一个方法。

A.h 类:

@interface AViewController : UIViewController <UIScrollViewDelegate>{
    id delegatee;
}
@property (nonatomic, assign) id <AViewControllerDelegate> delegatee;
@end

@protocol AViewControllerDelegate
@optional
- (void) tappedImage:(int)tag;
@end

A.m 班:

@dynamic delegatee;
- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {
UIImageView *imageView = (UIImageView *)[gestureRecognizer view];
int a = imageView.tag;

if ([self.delegatee respondsToSelector:@selector(tappedImage:)])
    [self.delegatee performSelector:@selector(tappedImage:) withObject: [NSNumber numberWithInt:a]];

}

B.h 类:

#import "AViewController.h"
@interface BViewController : UIViewController <AViewControllerDelegate> {...}

B.m级:

- (void)viewDidLoad
{
[super viewDidLoad];
//... some code

AViewController *obj = [[[AViewController alloc] init] autorelease];
obj.delegatee = self;
}

- (void) tappedImage:(int)tag{
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: [NSString stringWithFormat: @"%d.png",tag]]];
CViewController *NView = [[CViewController alloc] initWithPicture: imgView.image];
[self presentModalViewController:NView animated:YES];
[NView release]; NView = nil;
}

非常感谢您的帮助,我希望它能帮助我了解协议的工作原理。


两件事情。

  1. (你的崩溃)你宣布了你的delegatee作为 @dynamic 而不是 @synthesized 这意味着您负责创建-(void)setDelegatee:(id<AViewControllerDelegate>)(和 getter)方法。修复:只需将其更改为@dynamic to @synthesize delegatee;

  2. (您的警告)每当您想调用协议中未明确定义的方法时,您的协议将需要符合另一个协议:)。修复:添加NSObject您的声明的协议。

@protocol AViewControllerDelegate<NSObject>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS-示例中的协议和委托 的相关文章

随机推荐

  • git 忽略文件模式配置不起作用

    我在 ubuntu Linux 服务器上使用 gitolite git 服务器 我使用了一个钩子 它将在每次推送时调用并更新服务器的目录 其中包括实时站点的源代码 现在 每当我在本地电脑上更改某些内容并将更改推送到服务器时 都会调用挂钩并且
  • 在 Django 中发送批量电子邮件

    我必须在 django 中发送批量电子邮件 电子邮件模板将被定制 模板中的一些数据将来自数据库 我正在使用 django notification 但它只能向注册用户发送电子邮件 我必须向非注册用户发送电子邮件 将有五个电子邮件模板 用户可
  • 引用多个外部 Web API 的单个 Service Fabric 应用程序

    我的问题是有点相似 to 这个问题 https stackoverflow com questions 37567644 design of application in azure service fabric 但答案并没有真正帮助我 除
  • 我尝试从 USB 设备读取数据,但出现 USB 错误 5:无法读取数据:找不到实体 有人可以帮助我吗?

    我尝试通过 usb4java api 从 USB 设备读取数据 但收到错误 USB错误5 无法读取数据 找不到实体 有谁能够帮助我 必须注意的是 endpoint in 我从 LibUsb ENDPOINT IN 获取它 并将其传递给读取函
  • 在 SQL Server 中插入数据时,如何处理数据表中的 NULL 值变成缺失的 XML 元素?

    我想在 SQL Server 2005 中使用 XML 插入数据 因此我从后端获取了一个数据表 并按如下方式传递了该数据表 DataSet dsItem new DataSet DTItem TableName ItemDetails DT
  • ASP.NET MVC 2 - POST 后 ViewData 为空

    我真的不知道在哪里寻找错误 情况 我有一个 ASPX 视图 其中包含一个表单和一些输入 当我单击 提交 按钮时 所有内容都会 POST 到我的一个 ASP NET MVC 操作 当我在那里设置断点时 它被正确命中 当我使用 FireBug
  • 为什么我的布尔变量的值在回发之间丢失

    我有一个名为 CheckBoxActivated 的布尔变量 在验证用户名和密码后将其分配为 true string name us UserName string password us Password if name Equals t
  • sqlite 中的 strftime 转换为 postgres

    我在 sqlite 中遇到一个函数 需要将其转换为 postgres 语法 它是date date strftime w date days 谁能帮我将此 sqlite 段转换为 postgres 吗 这个 SQLite date date
  • 如何从同一个类中的静态函数调用公共事件?

    我有一个类 其中包含另一个类的 ObservableCollection 如果类成员之一发生更改 我希望收到通知 因为我需要在 MediaCollection 类中进行一些计算 所以我向该类添加了一个事件 public event Prop
  • 处理大文件或多个文件时 file_put_contents 太慢

    我在用文件放置内容创建视频文件 问题是速度和性能 创建平均大小为 50 mb 的文件平均需要大约 30 到 60 分钟 而且这还只是一个文件 我正在解码字节数组以创建文件 如何提高速度和性能 json str file get conten
  • Unity 3 按约定配置未在 Web 项目中找到类型

    我正在尝试使此约定配置正常工作 但我的 ASP NET MVC5 项目遇到问题 我在 Application Start 方法中添加了以下内容并将其连接到 DependencyResolver public static IUnityCon
  • 在使用 Java 8 重新协商 TLS_1.2 期间,服务器证书更改受到限制

    我对 SSL 还很陌生 并且遇到了一些看似已知的问题 我的应用程序是 SSL 客户端 并调用另一个启用双向 SSL 的组件 两个组件中的证书都是正确的 并且连接有时工作正常 每个服务器都有自己的服务器证书和私钥 但根证书和中间证书相同 服务
  • 如何迭代每隔一个数字

    阅读文档时 我注意到一句话 Rust 没有C stylefor 循环 所以 我想知道 如何制作一个相当于for i 0 i lt 10 i 2 我能想到的方法是这样的 for i in 0 10 if i 2 0 Do stuff Or e
  • 如何获取2d dict python中的所有键

    我有一本形式词典 d 123 2 1 3 1 124 3 1 125 2 1 126 1 1 那么 让我们看看二阶键 123 gt 2 3 124 gt 3 125 gt 2 126 gt 1 所以唯一的二阶键的总数是 1 2 3 现在 我
  • 在 Flash 对象上方显示图像

    我在这里面临着一个棘手的情况 这就是问题 我有一个 Flash 对象 我想在其上显示图像这些是我尝试过的技巧 1 玩转z index 没用 2 将wmode参数设置为透明 不透明 同样没有用 3 使用javascript并仅在页面加载后显示
  • 没有这样的模块“RestKit”与 cocoapods 和 swift

    我在一个全新的项目中遇到了这个问题 RestKit 和 Facebook SDK 都会出现此问题 奇怪的是 SwiftyJSON 工作得很好 我创建了一个全新的 swift 项目和一个 Podfile 其中包含 source https g
  • 当 CURLOPT_HTTPHEADER 需要“Content-Length”时

    我的应用程序的客户端中有此代码 ch curl init url curl setopt ch CURLOPT CUSTOMREQUEST GET curl setopt ch CURLOPT RETURNTRANSFER true cur
  • Ruby on Rails 过滤返回模型对象的属性

    我正在为 Rails 应用程序创建 API 我想返回User用于 API 调用但没有的对象crypted password salt or login token属性 有没有办法做这样的事情 do api fetch user u user
  • 命名空间 + 函数与类上的静态方法

    假设我已经或将要编写一组相关函数 假设它们与数学相关 从组织上来说 我应该 编写这些函数并将它们放入我的MyMath命名空间并通过引用它们MyMath XYZ 创建一个名为MyMath并使这些方法静态并引用类似的MyMath XYZ 为什么
  • iOS-示例中的协议和委托

    好吧 我正在寻找 但没有任何方法对我有用 以下代码基于许多教程和苹果文档 但我无法让它工作 有人可以帮忙吗 代码崩溃于 obj delegatee self 在 B h 类中 respondsToSelector 和 PerformSele