Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c ';现有ivar&x27;代表';对于不安全的未修复财产';代表';必须是不安全的_Objective C - Fatal编程技术网

Objective c ';现有ivar&x27;代表';对于不安全的未修复财产';代表';必须是不安全的

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

我得到上面的错误,但不确定如何着手修复它。这是我的代码:

.h:


错误发生在合成行中。但是我找不到问题。

看起来您的项目可能正在使用
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;