相关疑难解决方法(0)

在目标c中使用ivars vs属性的原因

我一直无法找到关于这个主题的任何信息,而且我所知道的大部分内容都是完全意外发生的(并且几个小时试图找出我的代码无效的原因).在学习objective-c的大多数教程时,我发现使用相同的名称创建变量和属性.我不明白它的意义,因为看起来该属性完成了所有的工作,变量只是坐在那里.例如:

Test.h

@interface Test : NSObject {
    int _timesPlayed, _highscore;
}

@property int timesPlayed, highscore;

// Methods and stuff

@end
Run Code Online (Sandbox Code Playgroud)

Test.m

@implementation Test

  @synthesize timesPlayed = _timesPlayed;
  @synthesize highscore   = _highscore;

  // methods and stuff

@end
Run Code Online (Sandbox Code Playgroud)

我知道的

1)好的,今天我发现(经过几个小时的混乱),无论你对属性做了多少改变,highscore = 5091231当你试图调用[测试高分]时它不会改变任何东西,因为它仍将返回_highscore的值(我认为)是在test.h中设置的ivar.因此,test.m中所有变量的变化都需要改变_highscore而不是highscore.(如果我错了,请纠正我)

2)如果我理解正确(我可能不这样做),test.h中设置的ivars代表实际内存,因为@properties只是访问该内存的方式.因此,在实现之外,我无法通过该属性访问_highscore.

我不明白

基本上我不了解这种情况是我是否需要使用ivars或者我是否可以使用@property和@synthesize.似乎ivars只是额外的代码,除了让我困惑之外什么都不做.我见过的一些最近的tuts似乎没有使用ivars,但有些人做了.那么这只是编码偏好的事情还是实际上很重要?我试过通过Apple的文档搜索,但我在那里相当迷失,似乎永远不会找到我正在寻找的东西.任何指导将不胜感激.

properties objective-c ivar

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

Objective-C中_variable和self.variable有什么区别?

我是Objective C和iOS的新手,目前正在尝试使用iOS 6 SDK学习应用程序开发.我真的无法理解的一个概念是在.m文件中访问时"_variable"和"self.variable"之间的区别.它们是一样的吗?还是不同?

以下是一个简单的示例

MyClass.h

#import <Foundation/Foundation.h>

@interface MyClass : NSObject
@property (strong, nonatomic) NSString *myName;
@end
Run Code Online (Sandbox Code Playgroud)

MyClass.m

#import "MyClass.h"

@interface MyClass ()
@property (nonatomic, strong) NSString *anotherName; 
@end

@implementation MyClass
- (void) myFunction {
    _myName = @"Ares";
    self.myName = @"Ares";

    _anotherName = @"Michael";
    self.anotherName = @"Michael";
}
@end
Run Code Online (Sandbox Code Playgroud)

那么上面的实现设置变量有什么不同吗?变量"myName"是Public,而"anotherName"是Private.

非常感谢任何投入.谢谢!

variables objective-c ios6

6
推荐指数
1
解决办法
7176
查看次数

标签 统计

objective-c ×2

ios6 ×1

ivar ×1

properties ×1

variables ×1