标签: synthesize

XCode 4.4自动@Synthesize在XCode 4.3项目上失败

就这么简单.

跑狮子.

  1. 我刚升级到XCode 4.4
  2. 加载了我最新的XCode 4.3项目文件
  3. 注释掉了一行@synthesize代码
  4. 和错误比比皆是.:(

已验证的编译器设置为"LLVM 4.0".

然后我做了相同的测试,但在XCode 4.4中创建了一个新项目,瞧!自动@synthesize在4.4项目中工作.

汽车@synthesize 似乎对工作添加到代码属性.但现有的旧版本会产生错误.

还有其他人经历过吗?还有其他我需要检查的东西吗?

我真的希望自动生成功能能够正常工作.

谢谢.

xcode synthesize

4
推荐指数
1
解决办法
2705
查看次数

Objective C Idioms - 属性,ivars和needsDisplay

这是我经常遇到的一种情况,足以使样板代码浪费,而且我确信我不能成为唯一的代码.这是一个单一的,是否有更好的方法,或者我每次都必须这样做?

@interface SomeUIElement : UIView
@property CGFloat insetMargin; // <-- just an example of a UI parameter
@end

@implementation SomeElement
- (void)setInsetMargin:(CGFloat)insetMargin {
    _insetMargin = insetMargin;
    [self setNeedsDisplay]; // <-- the only thing that stops it being synthesized
}
@end
Run Code Online (Sandbox Code Playgroud)

现在这引发了一个编译警告,我没有一个getter,摆脱我可以添加

- (CGFloat)insetMargin {
    return _insetMargin;
}
Run Code Online (Sandbox Code Playgroud)

但现在,它抱怨我没有ivar(因为定义的getter和setter意味着没有为我创建),所以我需要添加

@interface SomeUIElement () {
    CGFloat _insetMargin;
}
Run Code Online (Sandbox Code Playgroud)

这意味着我们需要在属性发生变化时强制显示更新,这是一个巨大的开销.

有没有(a)某种方式告诉ObjC我确实打算为我创建getter和ivar,所以我只需要编写setter,或者(b)更好的方式来请求显示更新当属性相关时视觉外观变化?

Apple的SDK如何做到这一点(我假设我没有错过任何观看方式,比如UILabel来源)?

properties objective-c uikit ivar synthesize

4
推荐指数
1
解决办法
298
查看次数

在VHDL中使用带有变量的FOR循环

有没有可能的方法在窗体中创建一个for循环:

for i in 0 to some_var loop
    // blah,blah
end loop;
Run Code Online (Sandbox Code Playgroud)

如果没有,有没有其他方法来创建相同的循环?由于While循环允许使用变量作为限制,但它们在我的项目中不可合成.

提前致谢,

Bojan Matovski

loops for-loop vhdl while-loop synthesize

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

添加getter会使用下划线不正确的语法

我有一个带有以下标题的类:

#import <Foundation/Foundation.h>

@interface CustomClass : NSObject

@property (strong, nonatomic) NSString *foo;

@end
Run Code Online (Sandbox Code Playgroud)

使用以下实现不会显示任何错误:

#import "CustomClass.h"

@implementation CustomClass

- (void) setFoo:(NSString *)foo {
    _foo = foo;
}

@end
Run Code Online (Sandbox Code Playgroud)

作为Objective-C的完全初学者,当我在实现中添加以下方法时,我感到困惑:

- (NSString *)foo {
    return _foo;
}
Run Code Online (Sandbox Code Playgroud)

因为现在方法中存在错误use of undeclared identifier 'title',它建议我更改_foofoo.它不仅表示在新添加的方法中,它还在之前的setter方法中说明了它.我试图查看情况,但我没有找到满意的答复.相关问题请谈@synthesize,但我已经读到没有必要,所以我不确定问题是什么.

提前致谢!
-GoldDove

xcode properties objective-c getter-setter synthesize

3
推荐指数
1
解决办法
308
查看次数

在Objective-C中使用指针式赋值与setter-methods有多危险?

可以说我有一个简单的类,如下所示:

@interface A { 
// @public
    int var;
}
// @property(some_property) int var;
@end
Run Code Online (Sandbox Code Playgroud)

当我想访问变量var时,我有一些选择.如果我公开var,我可以这样做:

A objectA = [ [ A alloc ] init ];
NSLog( @"%d", objectA->var );
objectA->var = someNumber;
Run Code Online (Sandbox Code Playgroud)

如果我把它变成一个属性,我将不得不做更像这样的事情:

A objectA = [ [ A alloc ] init ];
NSLog( @"%d", objectA.var ); // dot-syntax
NSLog( @"%d", [ objectA var ] ); // get-syntax
[ objectA setVar: someNumber ];
Run Code Online (Sandbox Code Playgroud)

我已经尝试了两种并且它们工作正常但我的问题是使用旧式指针表示法来访问对象内部的变量有多危险?以后我是否需要担心我现在应该通过标准化我的方法访问来解决这个问题?或者我可以逃脱这样做但是我想要它只要有效吗?

methods multithreading pointers objective-c synthesize

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

iOS 7 Dev - @synthesize不会自动创建ivars

我目前正在使用最新版本的Xcode(v5.0.2),我的应用程序的部署目标是iOS 7.0.

我的问题是,无论在哪个类中,我都可以在标题中设置属性

例如: @property (strong, nonatomic) NSString *firstName;

在实现文件中,我可以很好地合成它

例如: @synthesize firstName;

我的问题是我不能_firstName在代码中使用.我在其他项目中使用了自动ivars就好了(属性名称以下划线开头).

Xcode抱怨并告诉我将其更改为没有下划线的属性名称.我不明白为什么这个项目不会自动为我创建带有下划线的ivars.我知道在旧版本的Objective-C中,你必须自己做,但你不适用于iOS 7.

谢谢!

objective-c ios synthesize ios7

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

哪个最好:通过@synthesize或使用self关键字调用属性

发布ObjectiveC初学者级别问题.当我使用属性声明对象时,我发现我们可以通过2种方法访问特定属性.

@property(nonatomic,retain) NSString *str;
Run Code Online (Sandbox Code Playgroud)
  1. 使用@synthesize propertyname 例如: @synthesize str;

  2. 通过使用关键字self 例如:self.str;

那么这两种方法之间的区别是什么,哪种更合适.谢谢你的时间

properties objective-c self ios synthesize

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

在Objective-C中,@synthesize之后的代码是什么意思?

抱歉标题不好,我不知道还有什么可以称之为这个问题.无论如何,假设我有以下内容:

@synthesize display = _display
Run Code Online (Sandbox Code Playgroud)

我的问题是display和_display有什么区别?每个都指的是什么?

为了澄清,我知道@synthesize做了什么(它创建了getter和setter),但我不确定display和_display所指的区别.

我精通java,所以只要有可能就把你的答案联系起来.

谢谢

objective-c synthesize

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

为什么不同的集合合方法中的相同代码工作方式不同?

setProgramsetGraphic方法中我们有相同的代码:

NSLog(@"%@", self.display);  
Run Code Online (Sandbox Code Playgroud)

但是,输出显示self.display是setProgram,但它是一个UILable对象setGraphic.

是什么导致了不同的结果?display是IBOutlet并且program是NSArray对象.虽然program是SOGraphicViewController的模型,但我将从另一个控制器传递程序的值[segue.destinationViewController setProgram: self.brain.program].

@interface SOGraphicViewController ()
@property (nonatomic, weak) IBOutlet graphicView *graphic;
@end

@implementation SOGraphicViewController

@synthesize program = _program;
@synthesize graphic = _graphic;
@synthesize display = _display;

- (void)setProgram:(id)program {
    _program = program;
    [self.graphic setNeedsDisplay];
    NSLog(@"%@", self.display);
}

- (void)setGraphic:(graphicView *)graphic {
    _graphic = graphic;
    self.graphic.dataSource = self;
    NSLog(@"%@", self.display);
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios synthesize

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

没有@synthesizing的@property声明

我正在关注Joe Conway的Big Nerd Ranch iOS编程,当我看到以下代码时,我有点困惑.

WebViewController.h

#import <Foundation/Foundation.h>
@interface WebViewController : UIViewController
@property (nonatomic, readonly) UIWebView *webView;
@end
Run Code Online (Sandbox Code Playgroud)

WebViewController.m

#import "WebViewController.h"

@implementation WebViewController
- (void)loadView 
{
    // Create an instance of UIWebView as large as the screen
    // Tell web view to scale web content to fit within bounds of webview 
}

- (UIWebView *)webView
{
    return (UIWebView *)[self view];
}
@end
Run Code Online (Sandbox Code Playgroud)

不应该合成.h文件中声明的属性吗?Xcode也没有给出警告(当我声明一个带有合成的属性时它通常会这样做).

顺便说一句,在书中,他也提到过

在WebViewController.h中,添加属性(但不是实例变量)

不声明属性会自动为您生成实例变量吗?让我知道我错过了什么.谢谢.

properties ios synthesize

0
推荐指数
1
解决办法
2486
查看次数

是否应该忽略Xilinx中的Xst 646警告?

在我的代码中,我将使用一些寄存器来存储一些值以便在代码中做出决定.它们不直接从输入线获取值.现在,我得到......

信号已分配但从未使用过.在优化过程中将修剪此未连接的信号.

我应该忽略这个警告吗?我的模拟工作正常.

verilog fpga xilinx vlsi synthesize

0
推荐指数
1
解决办法
420
查看次数

使用@property和@synthesize的任何错误

我是Objective-C语言的新手,我正在尝试理解基本概念.我来自Java语言,所以我已经知道OOP编程的原理.这是我写的代码.它很简单,但不能正常工作.我有一些问题使用@property@synthesize

#import <Foundation/Foundation.h>

@interface Car: NSObject

@property(nonatomic,retain) NSString *brand;
@property int year;

@end //Car Interface


#import "Car.h"

@implementation Car

@synthesize brand;
@synthesize year;

@end //Car Implementation


#import "Car.h"

int main (int argc, const char * argv[])
{
    int y;

    //Creo un nuovo oggetto
    Car *myCar = [[Car alloc] init];

    //Setto i parametri
    [myCar setbrand: @"BMW Z4"];

    NSLog (@"Inserisci data modello: ");
    scanf (" %i", &y); //E' buona norma lasciare uno spazio
    [myCar setyear: y];

    //Stampo a video …
Run Code Online (Sandbox Code Playgroud)

objective-c synthesize

-1
推荐指数
1
解决办法
149
查看次数