• 1.3 封装


    一.匿名对象

     

    匿名就是没有名字, 匿名对象就是没有名字的对象

     

    1.有名字的对象,只要用一个指针保存了某个对象的地址, 我们就可以称这个指针为某个对象pPerson对象

    1. Person*p =[Personnew];// 0ffc12
    2. p->_age =30;
    3. p->_name=@"lnj";
    4. [p say];
    5. 0ffc12->_age =30;
    6. 0ffc12->_name=@"lnj";
    7. [0ffc12 say];

    2.没有名字的对象,无论有没有名字,只要调用new方法都会返回对象的地址,每次new都会新开辟一块存储空间

    1. [Personnew]->_age =30;
    2. [Personnew]->_name =@"LMJ";
    3. [[Personnew] say];

    3.匿名对象的应用场景

    3.1当对象只需要使用一次的时候就可以使用匿名对象

    1. Iphone*phone =[Iphonenew];// 0ffb11   phone = 0ffb11
    2. [phone brand];// [0ffb11 brand];
    3. [[Iphonenew] brand];// [0fff5 brand];

    3.2匿名对象可以作为方法的参数(实参)

    1. Person*p1 =[Personnew];
    2. //    Iphone *phone1 = [Iphone new];
    3. //    [p1 signal:phone1];
    4. [p1 signal:[Iphonenew]];

    二、修改项目模板

    • 修改项目模板以及main函数中的内容
      /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/Mac/Application/Command Line Tool.xctemplate/

    • 修改OC文件头部的描述信息
      /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Class.xctemplate

    • 1> Xcode文档安装的位置1:
      /Applications/Xcode.app/Contents/Developer/Documentation/DocSets

     注意: 拷贝之前最好将默认的文档删除, 因为如果同时存在高版本和低版本的文档, 那么低版本的不会显示

    • 2> Xcode文档安装的位置2:
      /Users/你的用户名/Library/Developer/Shared/Documentation/DocSets
      如果没有该文件夹可以自己创建一个

    • 代码块导入

      将下载好的代码片段拷贝到:/Users/LNJ/Library/Developer/Xcode/UserData/CodeSnippets

      注意将LNJ换为自己的用户名

    三、setter和getter方法

         封装: 屏蔽内部实现的细节, 仅仅对外提供共有的方法/接口

         好处: 保证数据的安全性

               将变化隔离

         规范: 一般情况下不会对外直接暴露成员变量, 都会提供一些共有的方法进行赋值

               成员变量都需要封装起来

    • setter和getter方法

    1. // setter
    2. -(void)setAge:(int)age;
    3. // getter
    4. -(int)age;
    • setter和getter方法的调用
    1. // setter方法
    2. p.age =10;// 编译器自动转换为:[p setAge:10];
    3. // getter方法
    4. p.age;// 编译器自动转换为:[p age];

    四、自定义代码块

    五、self关键字

    • self:谁调用,self返回谁(self在类方法中代表类对象,在对象方法中代表对象方法)

    • 注意点:在类方法和对象方法不可以用self调用self所在方法,否则是导致死循环

     如果self在对象方法中, 那么self就代表调用当前对象方法的那个对象

     如果self在类方法中, 那么self就代表调用当前类方法的那个类

     总结

     我们只用关注self在哪一个方法中 , 如果在类方法那么就代表当前类, 如果在对象方法那么就代表"当前调用该方法的对象"

     

     

     注意:

     >self会自动区分类方法和对象方法, 如果在类方法中使用self调用对象方法, 那么会直接报错

     >不能在对象方法或者类方法中利用self调用当前self所在的方法

     

     使用场景:

     可以用于在对象方法之间进行相互调用

     可以用于在类方法之间进行相互调用

     

     可以用于区分成员变量和局部变量同名的情况

    六、如何阅读文档

    • Start Developing iOS Apps Today
      马上着手开发 iOS 应用程序, 建立基本iOS开发概览

     

    • iOS Technology Overview

      iOS技术概览,阅读这个文档的目的和检测标准是,遇到具体问题,知道应该去看哪方面的文档

     

    • iOS Human Interface Guidelines
      iOS 人机交互指南,阅读这个文档的目的和检测标准是,看到任何一个App,你可以知道它的任何一个UI是系统控件,还是自定义控件,它的层次关系等等。

     

    • Programming with Objective-C
      学习OC基础语法,阅读这个文档的目的和检测标准是,看得懂基本的Objective-C代码,方便后面的学习和阅读各种示例代码

     

    • App Programming Guide for iOS
      iOS应用程序编程指南,介绍的就是开发一个App的完整流程,包括App的生命周期、休眠、激活等等. 阅读这个文档的目的和检测标准是,了解全部流程和很多细节问题

     

    • View Programming Guide for iOS

     

    • View Controller Programming Guide for iOS
      阅读这两个文档的目的和检测标准是,深刻理解什么是View,什么是View Controller,理解什么情况用View,什么情况用View Controller

     

    • Table View Programming Guide for iOS
      阅读这个文档的目的和检测标准是,深刻理解UITableViewUITableViewController的理论和使用方法

     





  • 相关阅读:
    Redis在win7上的可视化应用
    MemCache在win7上的可视化配置以及Nodejs/Net应用
    如何让nodejs同步操作
    Asp.Net Web API 2第十四课——Content Negotiation(内容协商)
    Redis for Windows(C#缓存)配置文件详解
    Redis for Windows(C#缓存)安装和使用
    Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
    Asp.Net Web API 2第十二课——Media Formatters媒体格式化器
    Asp.Net Web API 2第十一课——在Web API中使用Dependency Resolver
    Asp.Net Web API 2第十课——使用OWIN自承载Web API
  • 原文地址:https://www.cnblogs.com/Xfsrn/p/4780804.html
Copyright © 2020-2023  润新知