Objective c ';现有ivar&x27;代表';对于不安全的未修复财产';代表';必须是不安全的
我得到上面的错误,但不确定如何着手修复它。这是我的代码: .h:Objective c ';现有ivar&x27;代表';对于不安全的未修复财产';代表';必须是不安全的,objective-c,Objective C,我得到上面的错误,但不确定如何着手修复它。这是我的代码: .h: 错误发生在合成行中。但是我找不到问题。看起来您的项目可能正在使用ARC,那么属性应该这样声明: #import <UIKit/UIKit.h> @protocol ColorLineDelegate <NSObject> -(void)valueWasChangedToHue:(float)hue; @end @interface ColorLine : UIButton @property (non
错误发生在合成行中。但是我找不到问题。看起来您的项目可能正在使用
ARC
,那么属性应该这样声明:
#import <UIKit/UIKit.h>
@protocol ColorLineDelegate <NSObject>
-(void)valueWasChangedToHue:(float)hue;
@end
@interface ColorLine : UIButton
@property (nonatomic, weak) id <ColorLineDelegate> delegate;
@end
#导入
@协议ColorLineDelegate
-(void)值更改为hue:(float)色调;
@结束
@界面颜色线:UIButton
@属性(非原子,弱)id委托;
@结束
使用以下语法:
@interface SomeClass : NSObject {
id <SomeClassDelegate> __unsafe_unretained delegate;
}
@property (unsafe_unretained) id <SomeClassDelegate> delegate;
@接口SomeClass:NSObject{
id uu不安全u未获得授权的代表;
}
@属性(不安全\未维护)id委托;
当我在ARC项目中使用旧的示例代码时,我遇到了同样的问题。似乎不再需要将变量声明放入接口定义中。因此,您的代码应该如下所示:
h:
你也可以使用
@dynamic delegate
在实现中,而不是综合 可能有点晚,但要“符合ARC”,您只需更换
@property (nonatomic, assign) id <ColorLineDelegate> delegate;
@属性(非原子,赋值)id委托;
借
@property(非原子,强)id委托;
再见。如果你想要一个弱属性,这也行
@interface MyClass : NSObject {
__weak id <MyClassDelegate> _delegate;
}
@property (nonatomic, weak) id <MyClassDelegate> delegate;
@接口MyClass:NSObject{
__弱id_委托;
}
@属性(非原子,弱)id委托;
关闭ARC,看看问题是否消失。:-)可能是重复的该死的。。我正要打那个(所以我把你的答案改为+1)。这里有一个。这解决了我的问题,但在另一个类中,我有或多或少相同的代码和一个委托,由于某种原因,它不会产生相同的问题。你知道为什么吗?我以前没有用iOS5编码过,所以这种事情对我来说是新鲜事。事实上,我错了,这并不能解决我的问题。现在它只是说了关于'weak'属性的相同错误。如果使用ARC,那么我们必须删除“{id delegate;}”,一切都会正常工作。当这对我开始起作用时,我很兴奋,但后来我进一步研究了u safe u unrepaired,并在iOS编程中发现了这一点:Big Nerd Ranch指南-基本上,说不要这样做。Johannes在iOS 5.1和ARC中的注释对我来说非常有用。@JasonBub只要你是为iOS 5.0和更高版本构建的,就可以了。不幸的是,我需要以iOS 4.0及以上版本为目标。@janBP这对我来说是可行的,但你能解释一下为什么必须使用不安全的\u unretained吗??感谢这只会使代码在运行时崩溃。如果将委托分配给self,则会出现无法识别的选择器错误,程序将停止。您应该实现所有设置委托的协议方法,或者在委托类中将这些方法分配为可选方法。当我将旧代码转换为ark时,这一解决方案似乎非常有效。它对我来说非常有用,可以从接口中删除VAR定义区
#import "ColorLine.h"
@implementation ColorLine
@synthesize delegate;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
@end
@dynamic delegate
@property (nonatomic, assign) id <ColorLineDelegate> delegate;
@property (nonatomic, strong) id <ColorLineDelegate> delegate;
@interface MyClass : NSObject {
__weak id <MyClassDelegate> _delegate;
}
@property (nonatomic, weak) id <MyClassDelegate> delegate;