1、问题
自定义类需要表示它所要建模的实体的属性。
2、解决方案
需要在类接口中声明属性,然后在类实现中实现这些属性。
3、原理
在自定义类的头文件中,你需要两个东西:保存属性的实例变量值、属性声明。例如:
#import <Foundation/Foundation.h>
@interface Car : NSObject {
@private
NSString *name_;
}
@property(strong) NSString *name;
@end
这里的本地实例叫做name_,属性的声明以@property开头。注意在类名NSString前有(strong),strong就是property attribute,strong只是许多property描述符中的一个。
=============================================================================================
Table 1-2. Property Attributes
Attribute Description
readwrite The property needs both a getter and a setter (default).
readonly The property only needs a getter (objects can’t set this property).
strong The property will have a strong relationship (the object will be retained).
weak The property will be set to nil when the destination object is deallocated.
assign The property will simply use assignment (used with primitive types).
copy The property returns a copy and must implement the NSCopying protocol.
retain A retain message will be sent in the setter method.
nonatomic This specifies that the property is not atomic (not locked while being accessed).
==============================================================================================
在实现类中实现属性,编写所谓的getters和setters。
#import "Car.h"
@implementation Car
-(void)setName:(NSString *) name {
name_ = name;
}
-(NSString *) name {
return name_;
}
@end
// 调用代码
car.name = @"Sports Car";
NSLog(@"car is %@", car.name);
Or you can use properties with standard Objective-C messaging:
[car setName:@"New Car Name"];
NSLog(@"car.name is %@", [car name]);
Dot notation(第1个例子)是一个相对新一些的Objective-C特性,Objective-C 2.0引入。优势是在其他编程语言中,这很常见,所以你对此很熟悉。
第2种写法是平常的Objective-C messaging,也常常用。
选择哪个,就要根据你的个人偏好。
4、代码
#import "Car.h"
int main (int argc, const char * argv[]){
@autoreleasepool {
Car *car = [[Car alloc] init];
car.name = @"Sports Car";
NSLog(@"car.name is %@", car.name);
[car setName:@"New Car Name"];
NSLog(@"car.name is %@", [car name]);
}
return 0;
}
相关推荐
The relative importance of mental age and selected assessors of auditory and visual perception in the metropolitan readiness test 136 RICHARD J. HESS AND ROLAND T. HAHN I1 The HSRS most accurately...
The relative importance of mental age and selected assessors of auditory and visual perception in the metropolitan readiness test 136 RICHARD J. HESS AND ROLAND T. HAHN I1 The HSRS most accurately...
评估者刮板该项目的目标是将来自奥尔良教区评估办公室的数据转换为更适合数据分析的格式。开发环境设置先决条件您必须安装Python 3。 您可以下载。首先设置一个pythonpython3 -m venv .venv. .venv/bin/activate用...
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考