标签: declared-property

Objective-C声明@property属性(非原子,复制,强,弱)

有人能详细解释给我时,我必须使用各个属性:nonatomic,copy,strong,weak,等,为申报财产,并解释每个做什么?某种例子也会很棒.我正在使用ARC.

objective-c automatic-ref-counting declared-property

288
推荐指数
4
解决办法
16万
查看次数

声明的属性是否需要相应的实例变量?

Objective-C 2.0中的属性是否需要声明相应的实例变量?例如,我习惯做这样的事情:

MyObject.h

@interface MyObject : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

MyObject.m

@implementation
@synthesize name;
@end
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做了:

MyObject.h

@interface MyObject : NSObject {
}
@property (nonatomic, retain) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

这仍然有效吗?它与我之前的例子有什么不同吗?

objective-c instance-variables declared-property

102
推荐指数
3
解决办法
3万
查看次数

ARC下的NSString属性是强还是复制?

不使用ARC进行编译时,建议使用copy数据类型的属性,例如NSString.我找不到有关copyARC模式使用的适当文档.有人可以告诉我什么适用于ARC?

cocoa-touch objective-c automatic-ref-counting declared-property

59
推荐指数
4
解决办法
2万
查看次数

myView.frame.origin.x = value; 不起作用 - 但为什么?

我知道我不能用这个:

myView.frame.origin.x = 25.0;
Run Code Online (Sandbox Code Playgroud)

而我必须使用它:

CGRect myFrame = myView.frame;
myFrame.origin.x = 25.0;
myView.frame = myFrame;
Run Code Online (Sandbox Code Playgroud)

而且我一直这样做,但我不知道为什么我必须这样做.我想在我的理解中填补这个空白.谁能解释一下?

如今Xcode为您提供"表达式不可分配".前一段时间你得到一个编译错误"Lvalue需要作为赋值的左操作数".

struct objective-c variable-assignment declared-property

31
推荐指数
2
解决办法
2万
查看次数

将私有Objective-C方法或属性公开给子类

根据官方的一些话题,Objective-C中的一个类只应在其标题中公开公共方法和属性:

@interface MyClass : NSObject

@property (nonatomic, strong) MyPublicObject *publicObject;

- (void)publicMethod;

@end
Run Code Online (Sandbox Code Playgroud)

和私有方法/属性应保存在.m文件的类扩展中:

@interface MyClass()

@property (nonatomic, strong) MyPrivateObject *privateObject;

- (void) privateMethod;

@end
Run Code Online (Sandbox Code Playgroud)

并且我认为没有protected类型的私有但可以从子类访问.我想知道,除了公开宣布私有财产/方法之外,还有什么可以做到这一点吗?

inheritance visibility subclass objective-c declared-property

31
推荐指数
3
解决办法
3万
查看次数

使用属性的名称动态访问Objective-C属性

我知道对象属性的字符串名称.我将如何使用字符串获取和设置该属性?

reflection objective-c key-value-coding declared-property

25
推荐指数
1
解决办法
7379
查看次数

获取属性名称作为字符串

我需要一种方法来传递属性并获取分配给它的名称.有什么建议?

@property (nonatomic, retain) MyObject *crazyObject;

NSString *str = SOME_WAY_TO_GET_PROPERTY_NAME(crazyObject);
// Above method should return @"crazyObject"
Run Code Online (Sandbox Code Playgroud)

introspection objective-c objective-c-runtime declared-property

25
推荐指数
3
解决办法
2万
查看次数

为什么声明的属性同时使用retain和readonly?

我注意到Apple的一些示例包括属性上的a retainreadonly修饰符.retain如果在我们使用readonly修饰符时没有生成setter ,那么包括什么呢?

示例:@property (retain, readonly) NSString *title;来自AnimatedTableView示例.

memory-management objective-c declared-property

24
推荐指数
2
解决办法
7997
查看次数

@synchronized(self)是否创建了一个块,其中自身前缀在属性上是不必要的?

我在一些外国代码中读过一些东西,我想检查一下我的假设:

@synchronized(self)用于self在设置属性时删除前缀.

所以在我下面的例子中,我正在设置strText实例,而不仅仅是局部变量,对吧?

- (void)myfunction{
    NSString * strText = @"var in function";
    @synchronized(self)
    {
         strText = @"var class (self.strText)";
    }

}
Run Code Online (Sandbox Code Playgroud)

objective-c synchronized self declared-property

21
推荐指数
2
解决办法
2万
查看次数

在.h接口或.m文件的扩展名中声明属性?

在Objective-C中,最佳做法是:

  1. 在.h中声明诸如按钮之类的对象,然后在.m中进行合成

    .h
    @interface SomeViewController : UIViewController  
      @property (strong, nonatomic) UIButton *someButton;  
    @end
    
    .m
    @implementation SomeViewController  
      @synthesize someButton = _someButton;  
    @end
    
    Run Code Online (Sandbox Code Playgroud)
  2. 或者在.m中将它们声明为ivars

    @interface SomeViewController ()  
      @property (strong, nonatomic) UIButton *someButton;  
    @end  
    
    Run Code Online (Sandbox Code Playgroud)

我注意到在许多Apple代码中,特别是他们的Breadcrumbs示例代码,他们的许多属性都在界面中声明.这两者有区别吗?我还注意到,当声明属性时@interface,它们会自动用下划线前缀someButton = _someButton合成,使得合成无用.

coding-style objective-c declared-property

13
推荐指数
1
解决办法
6379
查看次数