swift和oc的protocol的成员变量】的更多相关文章

都需要协议实现者提供具体变量: 否则认为不符合协议. @protocol edddd <NSObject> @property(nonatomic, strong) NSObject *egooo; @end Auto property synthesis will not synthesize property 'egooo' declared in protocol 'edddd' Add a '@synthesize' directive Terminating app due to u…
1.创建一个对象 Car *car =[Car new] 只要用new操作符定义的实体,就会在堆内存中开辟一个新空间 [Car new]在内存中 干了三件事 1)在堆中开辟一段存储空间 2)初始化成员变量(写在类声明大括号中的属性就是成员变量,也叫做实例变量) 3)返回开辟空间的首地址 ⚠️:每个对象都有属于自己的属性 2.访问对象的属性 对象->对象成员(⚠️ 声明属性为@public 默认为@protect)…
成员变量: 写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量) 成员变量只能通过对象来访问 注意: 成员变量不能离开类, 离开类之后就不是成员变量 成员变量不能在定义的同时进行初始化 存储: 堆(当前对象对应的堆的存储空间中) 存储在堆中的数据, 不会被自动释放, 只能程序员手动释放 @interface Person : NSObject { int _age; NSString *_name; } @end  全局变量: 写在函数和大括号外部的变量, 我们称之为全局变量…
先前写C++ 的时候,命名成员变量一般都是用 m_veriableName:的方式,但是进到新项目组,用了OC以后,发现成员变量都是用 veriableName_的方式,最后的一个下划线表示是成员变量. 一开始比较不能理解,后来发现后缀 _ 比前缀 _ 更省事一点,利用xcode 的自动完成,可以少打很多的 _ ,而 _ 打起来还是比较浪费手势的…
摘要:  Objective-C  引入了“实例变量"的概念,但同时, 也经常出现 “成员变量”的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 今天查看apple 的官方文档时(如下).https://developer.apple.com/library/mac/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/index.html 发现了一个新的名词: 成员变量(member variable).…
相比Swift而言,OC规矩太多. 差不多,.h中声明的属性和成员变量均可以在子类中访问到.而.m则不可.而属性其实也就是成员变量的一种简写,其内部自动包含了getter和setter方法. 如图:ViewController是SubController的父类.在ViewController.h中声明成员变量imageView1和属性imageView2 在ViewController.m中同样声明了成员变量imageView3和属性imageView4. 在ViewController.m中…
摘要:  Objective-C  引入了"实例变量"的概念,但同时, 也经常出现 "成员变量"的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 在Objective-C中,定义一个类,需要有两部分: 第一是接口(interface),第二是实现(implementation). 接口对应接口文件,而实现对应了实现文件. 接口文件包含了类的声明,成员变量(member variable)和方法(method). 接口文件通常是.h 实现文件通常是.…
OC 初识NSString,self关键字,继承,成员变量的可见性,description方法 初识 NSString: char * string = "旭宝爱吃鱼"; 常量字符串存储在静态区 NSString * string = "旭宝爱吃鱼"; OC对象存储在堆区 创建NSString对象: 1.用字面量来创建 NSString * string = @"旭宝爱吃鱼"; 2.通过类方法创建NSString对象 NSString * for…
一.封装的作用: 1.重用 2.不必关心具体的实现 3.面向对象三大特征之一 4.具有安全性 二.OC中成员变量的命名规范以及注意事项 1.命名规范--.成员变量都以下划线“_”开头 1)为了跟get方法的名称区分开 2)一看到下划线开头的变量,肯定是成员变量 2.注意事项--以后的成员变量最好不要写@public,因为@public修饰的成员变量可以被别人乱改 三.成员变量的set方法 1.作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 2.命名规范: 1)方法都是以set开头,而…
点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法: [p.age]; // 这样不赋值相当于调用了getter: 注意点: 尽量不要在setter或getter中调用点语法,容易引发死循环:死循环是由于递归调用引发的: // 在setter调用点语法 - (void)setAge:(in…
类的创建: 与Java不同的是,OC创建一个类需要两个文件(.h和.m文件) 1> xxx.h:声明文件.用于声明成员变量和方法.关键字@interface和@end成对使用. 声明文件只是声明该类里成员变量和方法的格式(返回值类型,参数类型等),并不会实现它们. 在OC中继承用冒号表示,所有类都是继承于NSObject的,所以Sudent:NSObject.(这是和Java不同的,Java中所有类都继承于Object,但不用每定义一个类都写明继承关系,所有类都是默认继承于Object类的).…
一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age; 6 NSString *_name; 7 } 8 9 - (void)setAge:(int)age; 10 - (int)age; 11 12 - (void)setName:(NSString *)name; 13 - (NSString *)name; 14 15…
成员变量的作用域 OC中成员变量有四种作用域,同时每一种作用域对应着响应的关键字. * @private:自能在当前类的实现@implementation中访问 * @protected: 可以在当前类以及子类的实现@implementation中直接访问 默认 * @public: 任何地方都可以直接访问 * @package: 同一个"体系结构"框架可以访问.介于@private和@public之间 在@implementation实现中声明的成员变量默认是私有的. #import…
#import <Foundation/Foundation.h> //日期结构体 typedef struct{ int year; int month; int day; } Date; @interface School : NSObject { //@public NSString * _name; NSString * _address; Date _createTime; } - (void) introduction; @end #import "School.h&qu…
1.  成员变量作用域:    @public :在任何地方都能直接访问对象的成员变量.    @private :只能在当前类的对象方法中直接访问.(@implementation中默认是@private)    @protected :可以在当前类及其子类的对象方法中直接访问.(@interface中默认是@protected)    @package :只要处在同一框架中就能直接访问对象的成员变量.介于private和public之间.    @interface和@implementat…
比如用property声明一个变量属性 然后我们会为它用懒加载的方式重写get方法 然后我们在使用这个变量的时候,都是用self.itemArray,为什么这样用比较好呢,这是因为self.是对属性的访问,编译器在检测到用@property声明的属性时,会自动为属性生成setter和getter,如果自己重写setter或getter,则编译器会跳过自动生成,使用自定义的setter和getter,所以当用self.这种方式时(并在等号右边调用时),这时就会进入到我们自定义的懒加载方法.也就是说…
首先,为什么我们要定义一个新类呢?按照我的理解,就是为了抽象出来一个新的东西(也就是类),用来存储更多的数据变量和方法,一切类都直接或间接继承与NSObject. 在类的头文件里我们可以定义成员变量.属性变量.和方法,在方法里又分为实例方法和类方法. 1.成员变量 成员变量可以以三个关键词来修饰,即public.protected.private,用public来修饰的变量为共有的,外部可以访问子类可以继承 用protected来修饰的变量是受保护型的,外部无法访问子类可以继承(成员变量默认为p…
直接上例子: 要求: 合理的设计一个”学生“类 学生有* 姓名* 生日两个属性和说出自己姓名生日方法  要求利用设计的学生类创建学生对象,并说出自己的姓名和年龄 描述学生类 事物名称: 学生(Student) 属性:姓名(name), 生日(birthday) 行为:说出字节姓名和生日(say) typedef struct { int year; int month; int day; } Date; @interface Student : NSObject { @public NSStri…
@interface Student : NSObject { // @public // @protected // @private // 默认的作用域是@protected int age; @protected int no; @public float height; } @property (nonatomic, assign) int age; @end #import <Foundation/Foundation.h> #import "Student.h"…
目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objective-C类不能动态添加成员变量 总结 版权声明: 看下面的代码,考虑Objective-C里最常见的操作之一——类成员变量访问.   可能大多数人都没有意识到的是: Objective-C的 -> 操作符不是C语言指针操作! Objective-C对象不能简单对应于一个C struct,访问成员…
1. 类的定义 >用关键字@interface进行声名  @end 结束 >所有的类有一个基类NSobject >类名 也是标示符 第一个字母大写 如果多个字母组成 每个单词的首字母大写 >类名  冒号":"后  是父类(继承父类) >成员变量 (属性)  用大括号{ }包含起来 >方法的声明用两种  +号表示类方法(类名调用)  -表示实例方法9(对象调用) 以下是Person类的声明: #import <Foundation/Foundat…
http://leopard168.blog.163.com/blog/static/16847184420138153296930/ http://blog.csdn.net/thdxs/article/details/10988343 1.类方法是属于整个类,而不属于某个对象.2.类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量.3.类方法的调用可以通过类名.类方法和对象.类方法,而实例方法只能通过对象.实例方法访问.4.类方法只能访问类方法,而实例方法可以…
上篇介绍了Runtime类和对象的相关知识点,在4.5和4.6小节,也介绍了成员变量和属性的一些方法应用.本篇将讨论实现细节的相关内容. 在讨论之前,我们先来介绍一个很冷僻但又很有用的一个关键字:@encode 1.类型编码 为了协助运行时系统,编译器用字符串为每个方法的返回值.参数类型和方法选择器编码,使用的编码方案在其他情况下也很有用.在 Objective-C 运行时的消息发送机制中,传递参数时,由于类型信息的缺失,需要类型编码进行辅助以保证类型信息也能够被传递.在实际的应用开发中,使用案…
Swift相比OC语言有哪些优点 1.自动做类型推断 2.可以保证类型使用安全 Swif类型说明符 --Swift增加了Tuple表示元组类型 --Swift增加了Optional表示可选类型 常量一变量命名: --可以用任何你喜欢的字符作为常量和变量名,包含Unicode 字符 --常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符 --不能以数字开头,但是可以在常量与变量名的其他地方包含数字 /* \n -- 换行 \t -- 水平制表符 (4个空格)…
// // ReViewClass.h // hellowWorld // 本类是oc复习练手类 // Created by hongtao on 2018/3/26. // Copyright © 2018年 hongtao. All rights reserved. // #import <Foundation/Foundation.h> /** OC常量: 头文件里声明常量: extern NSString * const MyOwnConstant; extern NSString *…
swift与OC之间不得不知道的21点   自6月的WWDC大会上由苹果的大神Chris Lattner向我们首次展示swift至今已经大半年时间了,虽然绝大部分软件公司代码里还都见不到一丁点swift的影子,但各路大牛早已纷纷已经对swift进行过各种挖掘了. 我总结下我的看法.主要是给还没仔细研究swift的好奇的OC攻城狮看 swfit和OC间的联系 1.swift句尾不需要分号,除非你想在一行中写三行代码就加分号隔开. 2.swift不要写main函数,程序默认从上往下执行 3.swif…
OC调用Swift的方法:添加 import "xxxx-Swift.h" 头文件即可 Swift调用OC的方法:需要建立桥接: xxxx-Bridging-Header.h 头文件(建立方法自行百度) 注意: 1.在Swift调用OC的单例方法时,直接xxxx(),()里面可以有参,例如: oc中代码 @interface HPModel : NSObject + (instancetype)model; @end swift调用 let model:HPModel = HPMode…
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型. 废话不多说,直接上代码: 1.工具类(其实就是NSObject的一个分类)头文件 #import <Foundation/Foundation.h> @interface NSObject (YSRuntime) /** 返回当前类的属性数组 @return 属性数组(如:"name…
前言: 不铺垫那么多,单刀直入吧:runtime是一个C和汇编写的动态库,就像是一个小小的系统,将OC和C紧密关联在一次,这个系统主要做两件事情. 1,封装C语言的结构体和函数,让开发者在运行时创建,检查或者修改类,对象和方法等2,传递消息,找出方法的最终执行代码 也就是说我们写的OC代码在运行的时候都会转为运行时代码 通过runtime的学习能够更好理解OC的这种消息发送机制,并且我也认为对runtime的学习是对深入学习iOS必不可少的坎,比如你有可能通过阅读一些第三方框架来提高自己的编程技…
类的定义@interface FirstClass :NSObject@end//@interface表示声明的是一个类,“:”表示继承关系,@end类的结束类的实现@implementation FirstClass方法的声明+(void)print;-(id)init;//"+"表示声明的是一个类方法,由雷鸣调用//“-”表示声明的时实例方法,必须由类的对象来调用//不带参数的方法在调用时,会使用隐藏的self参数来访问实例变量的属性.声明带参数的方法:+(void)initWit…