//
// main.m
// Category注意事项 #import <Foundation/Foundation.h>
#import "Person+NJ.h" int main(int argc, const char * argv[]) { Person *p = [Person new];
// p.height = 1.75;
[p say]; return ;
}
//
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject
{
double _weight;
} @property (nonatomic, assign) int age; - (void)say;
@end
//
// Person.m #import "Person.h" @implementation Person -(void)say
{
NSLog(@"age = %i", _age);
}
@end
//
// Person+MJ.h #import "Person.h" @interface Person (MJ)
@end
//
// Person+MJ.m #import "Person+MJ.h" @implementation Person (MJ) // 5.如果多个分类中都有和原有类中同名的方法, 那么调用该方法的时候执行谁由编译器决定,会执行最后一个参与编译的分类中的方法
-(void)say
{
NSLog(@"%s", __func__);
}
@end
//  Person+NJ.h

#import "Person.h"

// 1.分类是用于给原有类添加方法的, 它只能添加方法, 不能添加属性(成员变量)
@interface Person (NJ)
//{
// double _height;
//}
// 2.分类中的@property, 只会生成setter/getter方法的声明, 不会生成实现以及私有的成员变量,所以下面写的不会报错,但是也不能添加属性。
//@property (nonatomic, assign) double height; - (void) hello; /*
方法的调用顺序:
1.分类
2.本类
3.父类
*/
@end
//  Person+NJ.m

#import "Person+NJ.h"

@implementation Person (NJ)

- (void)hello
{
// 3.可以在分类中访问原有类中.h中的属性
NSLog(@"hello %f", _weight);
} // 4.注意: 如果分类中有和原有类同名的方法, 会调用分类中的方法,也就是说会忽略原有类的方法
// 注意: 在开发中尽量不要这样写,原有的就废了。
-(void)say
{
NSLog(@"%s", __func__);
}
@end

oc58--Category注意事项的更多相关文章

  1. Category注意事项

    1.分类的使用注意事项 分类只能增加方法, 不能增加成员变量 @interface Person (NJ) { // 错误写法 // int _age; } - (void)eat; @end 分类中 ...

  2. OC基础(18)

    Category基本概念 Category注意事项 *:first-child { margin-top: 0 !important; } body > *:last-child { margi ...

  3. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  4. 2020年iOS进阶面试题总结(一)

    准备找工作的你,可以看看,复习复习!! 1.说一下OC的反射机制 在动态运行下我们可以构建任何一个类,然后我们通过这个类知道这个类的所有的属性和方法,并且如果我们创建一个对象,我们也可以通过对象找到这 ...

  5. OC-ARC,类扩展,block

    总结 标号 主题 内容 一 autorelease autorelease基本概念/自动释放池/autorelease基本使用 二 autorelease注意事项 注意点/应用场景 三 ARC 什么是 ...

  6. Masonry使用注意事项

    1 理解自身内容尺寸约束与抗压抗拉 自身内容尺寸约束:一般来说,要确定一个视图的精确位置,至少需要4个布局约束(以确定水平位置x.垂直位置y.宽度w和高度h).但是,某些用来展现内容的用户控件,例如文 ...

  7. Qt编写自定义控件插件路过的坑及注意事项

    在一日一控件的口号下,终于写好了五十几个自定义控件,包括各种仪表盘,各种温度计,各种进度条,各种按钮等,具体可参见(http://www.cnblogs.com/feiyangqingyun/p/61 ...

  8. 关于IntentFilter的几点注意事项:

    http://blog.csdn.net/cnnumen/article/details/8464786 IntentFilter就是用于描述intent的各种属性, 比如action, catego ...

  9. Objective-C :Category

    Category 引入 在日常的开发中,可能会碰到这样的需求:给某个类增加方法.比如说,需要给NSString类增加一个打印的方法.当然,我们可以新建一个类比如TestString,并继承NSStri ...

随机推荐

  1. 第一次android混淆实战

    第一次混淆,主要是因为引用本地第三方jar包的问题.虽然说本地第三方jar包自动避免混淆,但一些本地第三方jar包下的一些包要避免混淆.比如: 文中的com.org 这些包名都要避免混淆. 下面是我用 ...

  2. vim之<F12> 一键生成tags的一些小优化

    在之前我写的<<vim之tags>>中最后提到将vim和tags成和更新的全部集中到一个<f12>键上来. 这在实践中证明是相当方便的, 不过依然村庄几个问题如下: ...

  3. Ubuntu下获取内核源码

    查看当前系统使用的内核版本: apt-cache search linux-source 输出如下: linux-source - Linux kernel source with Ubuntu pa ...

  4. 2016.01.22 前端学习 HTML/CSS

    学习HTML/CSS  http://edu.51cto.com/course/course_id-3116.html 明日实践

  5. Nginx 监控

    编译安装加上http_stub_status_module 模块 location /status { stub_status on; # access_log /usr/local/nginx/lo ...

  6. demo__image_loader

    环境 webpack4.x 文件结构 │ package.json │ webpack.config.js │ yarn.lock │ ├─dist │ 1f871aa58.png │ bundle. ...

  7. easyui 网址

    http://www.runoob.com/jeasyui/jeasyui-datagrid-datagrid23.html http://www.jeasyui.com http://fineui. ...

  8. js 图表转图片

    最近项目上有个需求,是将一些teechart做的图表转换成图片插入自动生成的PDF里,Teechart绘图和如何生成PDF这些这里就不说了,这个任务比较别扭的一点是,图表自动生成,且整个过程中页面不能 ...

  9. ES6 基础学习

    ECMAScript 6 标准入门 一.let和const let命令 let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效:是块级作用域,且let不允许 ...

  10. 37.分组聚合操作—其他metric

    课程大纲     要学其他的metric(count,avg,max,min,sum) count:bucket,terms,自动就会有一个doc_count,就相当于是count avg:avg a ...