Tag: 属性

在swift中重写属性

例如有一个第一类 public class MyBaseButton: UIButton { public var weight: Double = 1.0 public var text: String? { get { return self.titleForState(.Normal) } set { return self.setTitle(newValue, forState: .Normal) } } } 和inheritance的类: public class SomeButton: SomeBaseButton { override public var text: String? = "text" override public var weight: Double = 2.0 } 所以,逻辑是SomeClass定义自己的文本和权重。 但是我得到一个错误: 对于文本 […]

在故事板中向部分文本UILabel添加下划线属性

如何仅使用故事板来强调UILabel部分文本? 我可以在代码中做到这一点,我可以强调标签的整个文本,但不能在string中加一两个单词。

iOS财产声明澄清

这是一个两部分的问题,希望我能更多地了解这个话题。 1)在我看来,你有两个stream行的选项来为objective c的类声明一个属性。 一个是将该属性添加到标头的类体中,例如。 @interface MyClass : NSObject { NSArray *myArray; } 或者你可以在@interface后面和@end语句之前添加它。 @interface MyClass : NSObject { // } @property (nonatomic, retain) NSArray *myArray; 这两种“风格”之间有什么区别?你们什么时候select一种? 2)在@property之后,你可以find像(nonatomic, retain)这样的选项。 那些为什么和为什么/何时使用不同的select?

@property实际上在幕后做了些什么? 和自我>和_下划线

我还在挣扎@implementation部分的语法错误。 所以,我想了解使用@property而不是。 第一种情况是一个@interface,我在{}中声明了一些variables。 //ViewController.h #import <UIKit/UIKit.h> #import "Student.h" // just class i made @interface ViewController : UIViewController { Student *stObj; } 而且,我试图引用stObj指针使用几个标识符(_(下划线),self。,self>,没有) // ViewController.m #import "ViewController.h" @interface ViewController () // just leaving this code cuz i haven't study what it is 🙂 @end @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; stObj = [[Student alloc]init ]; […]

iOS的MapKit拖动注解(MKAnnotationView)不再与地图平移

我正在学习在我刚刚起步的iOS应用程序中使用MapKit。 我正在使用一些模型实体作为注释(将<MKAnnotation>协议添加到它们的头文件中)。 我也创build自定义MKAnnotationViews并将draggable属性设置为YES 。 我的模型对象有一个location属性,它是一个CLLocation* 。 为了符合<MKAnnotation>协议,我向该对象添加了以下内容: – (CLLocationCoordinate2D) coordinate { return self.location.coordinate; } – (void) setCoordinate:(CLLocationCoordinate2D)newCoordinate { CLLocation* newLocation = [[CLLocation alloc] initWithCoordinate: newCoordinate altitude: self.location.altitude horizontalAccuracy: self.location.horizontalAccuracy verticalAccuracy: self.location.verticalAccuracy timestamp: nil]; self.location = newLocation; } – (NSString*) title { return self.name; } – (NSString*) subtitle { return self.serialID; } 所以,我有4个必要的方法。 而且他们非常简单。 当我阅读MKAnnotationView和@draggable属性中的苹果文档时,它说: 将该属性设置为YES可使用户拖放注释。 […]

自动将属性值从一个对象复制到另一个不同types的对象,但协议相同(Objective-C)

我有两个具有同一组属性的类,在协议中使用@property指令声明,它们都执行。 现在我想知道是否可以使用第二个类的实例中的值自动填充第一个类的实例(反之亦然)。 我想这种方法是健壮的,所以如果我改变协议中声明的属性,将不需要在复制方法中添加额外的代码。

Objective-C:覆盖超类getter并尝试访问ivar时发生编译错误

我正在构build一个iOS 6应用程序。 我有一个inheritance自超类TDWeapon的类TDBeam 。 超类TDWeapon在TDWeapon.h文件中声明@property: @interface TDWeapon : UIView @property (nonatomic) int damage; @end 我没有明确地@thenthesize属性,因为我让Xcode自动这样做。 在TDBeam的子类中,我重写了TDBeam.m文件中的getter: #import "TDBeam.h" @implementation TDBeam – (int)damage { return _damage; } @end 按照预期,Xcode会自动完成getter方法名称。 但是,当我试图引用_damage实例variables(从超类inheritance),我得到一个编译器错误: Use of undeclared identifier '_damage' 我在这里做错了什么? 我已经试过显式添加@synthesize,并更改_damage伊娃的名称,但编译器不会“看到”它或超类的任何其他ivars。 我以为ivars是可见的,可以从子类访问?

何时使用目标C中的属性?

我在这里有一个问题: 在iPhone应用程序混淆双免费错误消息/内存泄漏 ,我认为需要一个新的问题来回答它。 我感兴趣的代码是在这个问题,但我会重新发布在这里 #import <UIKit/UIKit.h> #import "MyManager.h" @interface ListOfCarShares : UITableViewController <NSXMLParserDelegate> { NSURLConnection *connection; NSMutableData *carsharexml; NSMutableArray *ldestination; NSMutableArray *ldeparts_from; NSMutableArray *lcs_id; NSMutableArray *ltime; NSMutableString *currentElement; NSMutableString *tdest; NSMutableString *tfrom; NSMutableString *ttime; NSMutableString *tid; } -(void)fetchcarshares; @property (nonatomic, assign) IBOutlet UITableViewCell *maincell; @end #import "ListOfCarShares.h" @implementation ListOfCarShares @synthesize maincell; – (id)initWithStyle:(UITableViewStyle)style { self […]

私人和公共成员如何在Objective-C中实施?

我有一些关于在工作中使用属性和实例variables的讨论,所以我想find一个wiki的答案。 现在,我知道在Objective-C中没有真正的私有成员types,一切都非常公开。 不过,我有点担心我们应该devise我们的class级,也遵守面向对象的原则。 我想听听这三种devise方法的意见: 答:根据各个职位甚至到斯坦福大学新的iPhone开发课程,你应该随时随地使用属性。 然而,恕我直言,这种方法制动OOP的devise原则,因为在这种情况下,所有成员公开。 为什么我需要将所有内部/本地实例variables发布到外部? 另外,如果你通过属性使用合成的setter,而不是直接使用本地ivar,那么就会有一些(但仍然)开销。 这是一个示例: //==== header file =====// @interface MyClass : NSObject @property (nonatomic, retain) NSString *publicMemberWithProperty; @property (nonatomic, retain) NSString *propertyForPrivateMember; @end B.另一种方法是在头文件中声明ivars(不声明相对属性)私有成员,并在同一个头文件中为公共成员声明纯属性(不声明相对ivars)。 在这种情况下,Ivars将直接在课堂上使用。 这种方法是有道理的,但不能使用属性的所有好处,因为我们在设置新值之前手动释放旧值。 这是一个示例: //==== header file =====// @interface MyClass : NSObject{ NSString *_privateMember; } @property (nonatomic, retain) NSString *publicMemberWithProperty; @end C.为头文件中的公共成员声明纯属性(不声明相对ivars),并在实现文件的私有接口中为私有成员声明纯属性(不声明相对ivars)。 恕我直言,这个方法比第一个更清楚,但同样的问题仍然存在:为什么我们必须有内部/本地成员的财产? 这是一个示例: //==== header file […]

有或没有实例variables的Objective-C属性

可能重复: Objective-C 2.0中的属性和实例variables 我正在使用属性只为ivars,不需要任何真正的validation时获取或设置一个类,我正在创作的值。 Ex: @interface ClassB : NSObject { // No ivars } @property (nonatomic, retain) ClassA *obj; @property (nonatomic, retain) NSString *str; 每当我在类中调用这些方法,我总是使用self.obj / self.str或[self obj] / [self str]。 通过这种方式来设置对象的状态,以便通过编译器生成的getter和setter更加仔细地pipe理引用。 这样说,有没有什么问题可以用这种方式来创build我的类? 另外,在没有ivar的情况下,在@implementation文件中被覆盖的“dealloc”方法需要什么“释放”?