ios 协议(delegate)使用过程中遇到assign attribute must be unsafeunretained

今天在使用协议的过程中,偶然发现这样使用

@interface AppDelegate (){
    id<ChatDelegate>  testdelegate;
}
@property (nonatomic , assign) id<ChatDelegate> testdelegate;

@end

@implementation AppDelegate
@synthesize testdelegate;

会报错:

Existing instance variable ‘delegate‘ for property ‘delegate‘ with assign attribute must be
unsafe unretained

修改成:

@interface AppDelegate (){
   __unsafe_unretained id<ChatDelegate>  testdelegate;
}
@property (nonatomic , assign) id<ChatDelegate> testdelegate;

@end

@implementation AppDelegate
@synthesize testdelegate;

就好了,这只是为了相容iOS4以下的版本

参考:http://www.cnblogs.com/lyanet/archive/2013/05/07/3064290.html

时间: 2024-08-08 11:22:21

ios 协议(delegate)使用过程中遇到assign attribute must be unsafeunretained的相关文章

Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果

目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果要实现这个效果,首先要搞清楚两大问题: 1.来电时的代码主要实现流程. 2.主流音乐播放器在播放过程中,如果有来电,到底在收到了什么事件后将音乐暂停了? 一:来电时的代码主要实现流程 我不是第一研究来电代码的人,网上已经有高手对这个流程剖析过,不是不完全符合我的要求,我参考过的比较有价值的是如下两个

iOS 协议delegate分六步

第一步:声明协议 在RootView.h中, @protocol 协议名 <基类> 方法 @end @protocol RootViewDelegate <NSObject> - (void)presentToViewController; @end 第二步:声明代理人 在RootView.h中 //必须是assign,为了防止两个对象之间的循环引用 @property (nonatomic, assign)id<RootViewDelegate>rootDelegat

iOS 8 动画执行过程中返回 Crash

之前项目里一直有个iOS8 [UIScrollView(UIScrollViewInternal) _notifyDidScroll] crash的问题,存在了很久,后来复现问题,返现是动画执行过程中执行pop 的问题 场景:在商品详情页加车之后  做了滑动到下面的商品推荐位置, 当动画还没有执行完毕, 就POP回上个页面,就会发生如下Crash 参考文档 https://stackoverflow.com/questions/26103756/uiscrollview-internal-con

DHT协议C++实现过程中各种问题

---恢复内容开始--- 博主是个菜鸟,什么地方写的不对或者理解有误的地方还请指正出来. DHT协议是BT协议中的一部分,也是一个辅助性的协议.HTTP协议中用 来定位资源也就是html文本是用URL这样的协议的,而在BT或者说P2P的 世界中,没有了以前那样可以直接定位的服务器,所以需要能够动态的掌 握到资源的分布,那DHT协议就是BT中用来定位资源的协议,具体的不多 说,可以看看官方网站对于BT或者DHT十分详尽的描述: http://www.bittorrent.org/beps//bep

【原】iOS下KVO使用过程中的陷阱

======================================================= 原创文章,转载请注明 编程小翁@博客园,邮件[email protected],欢迎各位与我在C/C++/Objective-C/机器视觉等领域展开交流! ======================================================= KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作

ios中的代理与协议(delegate)

源码地址 :http://download.csdn.net/download/swanzhu/9016861 一.理解协议与代理 协议 协议的格式:@protocol关键字:协议的声明 例如 @protocol CustomAlertViewDelegate <NSObject> <methods>协议的方法 @optional //此关键字下声明的方法,是可选实现的方法. @required //此关键字声明的方法为,必须实现的方法,如果不实现,编译会报警告,程序运行崩溃. /

ios逆向过程中lldb调试技巧

在ios逆向过程中,善于运用lldb,会给逆向带来很大的方便 一般的命令: 1.image list -o -f  看看各个模块在内存中的基址 2.register read r0  读取寄存器r0的值.register read  读取所有寄存器的值 3.expression(或者缩写expr)  表达式 例子: expression $r6 = 1   // 设置r6寄存器的值 expression $r6       // 查看r6寄存器的值 expression username(源代码

UIActionSheet关闭动画过程中调用delegate = nil 导致的内存泄露

UIActionSheet在动画期间(ActionSheet button点击之后,到didDismissWithButtonIndex调用完成之前)设置delegate为空会导致delegate无法释放. 先来看个例子: 例子中创建一个UIActionSheet,并在按钮点击之后0.1秒(关闭动画结束前)设置delegate = nil. #import "LIViewController.h" @class UIActionSheetDelegateImpl; static UIA

iOS 自己主动登录,登录过程中一直显示载入页

iOS开发中 假设client做的人性化一点肯定会考虑自己主动登录 事实上原理非常easy,就是再首次登录成功之后将username和password存入userdefault 下次登录的时候推断usedefault中有没有存储usernamepassword,假设有的话就绕过登录界面直接登录 可是在做的过程中遇到了一个问题 如今做一整理,供大家学习,指正 一般实现自己主动登录都是在载入页中去实现. 可是登录一般都须要与server通信.是异步的,而载入页在主线程中.这样就无法控制载入页在登录完