iphone - 将 ivar 设置为自定义子分类对象不起作用

标签 iphone objective-c ios cocoa-touch automatic-ref-counting

我可能忽略了一些小东西,但我似乎无法弄清楚。

我正在尝试将一个自定义类的实例传递给另一个自定义类的实例。 注意:我正在使用 ARC*

第二个自定义类设置完毕:

#import "OneArtsDay.h"

@interface SocialButton : UIButton {    
    OneArtsDay *artsDay;
}

@property (nonatomic) OneArtsDay *artsDay;

- (void)setArtsDay:(OneArtsDay *)day;

@end

#import "SocialButton.h"

@implementation SocialButton
@synthesize artsDay;

- (void)setArtsDay:(OneArtsDay *)day {
  if (day ==nil) {
    NSLog(@"Error, cannot set artsDay");
  }
  else {
  artsDay = day;
  }
}

@end

现在,当我在代码中调用这些命令时:

    SocialButton *social = [[SocialButton alloc] init];
    OneArtsDay *day = [[OneArtsDay alloc] init];
    //Do things with day here//
    [social setArtsDay:day];

当我尝试访问属性 OneArtsDay *artsDay 时,仍然出现错误。我错过了什么?

最佳答案

该属性应声明为 strong。下面是我如何编写相同的代码:

#import "OneArtsDay.h"

@interface SocialButton : UIButton

// property decl gives me the file var and the public getter/setter decls
// strong tells ARC to retain the value upon assignment (and release the old one)
@property (nonatomic, strong) OneArtsDay *artsDay;

@end


#import "SocialButton.h"

@implementation SocialButton

// _underscore alias let's me name stack vars and prams the same name as my property
// without ambiguity/compiler warnings

@synthesize artsDay=_artsDay;

- (void)setArtsDay:(OneArtsDay *)artsDay {
    if (artsDay==nil) {
        NSLog(@"Error, cannot set artsDay");
    } else {
        _artsDay = artsDay;
    }
}

@end

关于iphone - 将 ivar 设置为自定义子分类对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10342349/

相关文章:

ios - 通过传入数组而不是 varlist 创建 UIActionSheet 'otherButtons'

iphone - ios 在条件下继续

Objective-C Mac OSX 应用程序 - 从另一个委托(delegate)获取变量?

iphone - 如何添加以下额外的链接器标志?

ios - 如何获取 View 的框架并将其设置为渐变的框架

iphone - 具有其他 View 的 UITabbar Controller ,而不是使用 monotuch 的 iphone 中的主窗口

iphone - AFNetworking 在 NSError 对象中返回响应

ios - 核心数据模型——实体和逆

ios - 按下下一个按钮时如何更改上一个按钮的颜色?

objective-c - 是否有任何私有(private) api 来监控 iPhone 上的网络流量?