Objective的头文件@interface属性
源码:http://files.cnblogs.com/ios8/TestPropertyDemo.zip
1 前言
最近有个疑惑 @interface中的属性和@property声明的属性有什么区别呢,经过上网搜索和实践验证,个人总结了几点,共同学习一下。
2 详述
例子
PropertyModel.h
- #import <Foundation/Foundation.h>
- @interface PropertyModel : NSObject{
- NSString* sex;
- @public NSString* name;
- @private NSString* classes;
- }
- @property(nonatomic,copy)NSString* sexName;
- @property(nonatomic,copy)NSString* classesName;
- @end
SubProModel.m
- #import "SubProModel.h"
- @implementation SubProModel
- -(void)testSub{
- // self.newClasses = self->classes;//Wrong:private property
- self.newSexName = self->sex;
- self.newName = self->name;
- }
- @end
main.m
- #import <Foundation/Foundation.h>
- #import"PropertyModel.h"
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSLog(@"Hello, World!");
- PropertyModel* pro = [[PropertyModel alloc] init];
- // NSString* temp = pro->sex;//Wrong:pro is protected
- NSString* temp = pro->name;
- }
- return 0;
- }
2.1 本类中
对于PropertyModel的@interface中的属性:
NSString* sex;
@public NSString* name;
@private NSString* classes;
sex为默认的protect属性只允许本类和子类访问。
name为共有的所有类都能访问。
classes为私有的只有子类访问。
2.2 本类访问
- #import "PropertyModel.h"
- @implementation PropertyModel
- -(void) testPro{
- self.sexName = sex;
- self.classesName = classes;
- }
- @end
可以直接调用属性名称访问。
2.3 外部类访问
- #import "SubProModel.h"
- @implementation SubProModel
- -(void)testSub{
- // self.newClasses = self->classes;//Wrong:private property
- self.newSexName = self->sex;
- self.newName = self->name;
- }
- @end
需要使用“->”访问指针形式访问。
3 结语
以上是所有内容,希望对大家有所帮助。多的就不说了,可以下载Demo详细观看他们的区别。
Demo下载地址:http://download.csdn.net/detail/u010013695/5539117
Objective的头文件@interface属性的更多相关文章
- UIButton 头文件常见属性和方法
		UIButton头文件常见属性 1.属性 contentEdgeInsets: default is UIEdgeInsetsZero.设置内容四边距,默认边距为0 @property(nonatom ... 
- UILabel头文件常见属性
		text : default is nil 文本属性,默认值是 nil @property(nullable, nonatomic,copy) NSString *text; font : defau ... 
- Viewing the interface of your Swift code,查看Swift代码的头文件的三种方法
		Technical Q&A QA1914 Viewing the interface of your Swift code Q: How do I view the interface ... 
- Objective-C声明在头文件和实现文件中的区别
		Objective-C声明在头文件和实现文件中的区别 转自codecloud(有整理) 调试程序的时候,突然想到这个问题,百度一下发现有不少这方面的问答,粗略总结一下: 属性写在.h文件中和在.m文件 ... 
- jni.h头文件详解二
		作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ... 
- jni.h头文件详解一
		1.jni.h头文件路径: /usr/lib/jvm/jdk_1.6.0_43/include/jni.h 2.jni.h头文件组成分析图: 3.下面通过上图进行分析讲解jni.h头文件. 一. jn ... 
- 【转】 jni.h头文件详解(二)
		原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ... 
- NSObject头文件解析 / 消息机制 / Runtime解读 (一)
		NSObject头文件解析 当我们需要自定义类都会创建一个NSObject子类, 比如: #import <Foundation/Foundation.h> @interface Clas ... 
- #include、#import与@class的使用与头文件循环引用问题
		#include #include <>:一般是对系统库文件的引用,编译器会去系统文件文件夹下查找. #include "xxx.h":一般是对自己定义文件的引用,编译 ... 
随机推荐
- POJ 3268 Bookshelf 2 动态规划法题解
			Description Farmer John recently bought another bookshelf for the cow library, but the shelf is gett ... 
- SpringCloud学习资料
			CSDN博客:http://blog.csdn.net/k21325/article/details/52789829 http://blog.csdn.net/qq_26562641/article ... 
- jenkins 搭建过程中遇到的问题
			1.[ERROR] Unknown lifecycle phase "mvn". You must specify a valid lifecycle phase or a goa ... 
- 使用maven编译Java项目
			摘要: 综述 本文演示了用Maven编译Java项目 需要 时间:15分钟 文本编辑器或者IDE JDK 6 或者更高版本 创建项目 本例主要为了展示Maven,所以Java的项目力求简单. 创建项目 ... 
- Android的Button按钮,ACTION_UP事件不触发解决方案
			在android 编程时,有时候要实现当Button一直按下的时候,执行一些逻辑代码,当按钮弹起的时候,终止这些逻辑代码的执行. 比如在 设置页面的滑动开关时,如果不监听ACT ... 
- hihocoder第220周-一道拧巴的题
			一.220周 题目链接 问题描述 键盘上有N个数字按键,每个按键只能按一次,每次可以按下多个键,请输出所有可能的按键情况. 输入一个整数N(N在1~8之间),输出全部的按键可能.例如:输入3,输出为 ... 
- 【AI】Computing Machinery and Intelligence - 计算机器与智能
			[论文标题] Computing Machinery and Intelligence (1950) [论文作者] A. M. Turing (Alan Mathison Turing) [论文链接] ... 
- java struts2入门学习--OGNL语言基本用法
			一.知识点学习 1.struts2中包含以下6种对象,requestMap,sessionMap,applicationMap,paramtersMap,attr,valueStack; 1)requ ... 
- 最新CoreData封装Demo
			1.创建CoreData文件 2. 3. 4. UploadCoreDataAPI.h // // UploadCoreDataAPI.h // dsafsda // // Created by 冯敏 ... 
- 使用btrace来找出执行慢的方法
			转载于:https://shaojun.name/2016/07/260 btrace script import static com.sun.btrace.BTraceUtils.name; im ... 
