热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[10秒学会]iOS9新特性之常见关键字

2019独角兽企业重金招聘Python工程师标准ViewController.m01-iOS9新特性之常见关键字Createdbyxiaomageon151022.

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

//
// ViewController.m
// 01-iOS9新特性之常见关键字
//
// Created by xiaomage on 15/10/22.
// Copyright © 2015年 xiaomage. All rights reserved.
//#import "ViewController.h"@interface ViewController ()/*nullable作用:表示可以为空nullable书写规范:// 方式一:@property (nonatomic, strong, nullable) NSString *name;// 方式二:@property (nonatomic, strong) NSString *_Nullable name;// 方式三:@property (nonatomic, strong) NSString *__nullable name;*/
//@property (nonatomic, strong) NSString *__nullable name;
//@property (nonatomic, strong) NSString * name;/*nonnull: non:非 null:空书写格式:@property (nonatomic, strong, nonnull) NSString *icon;@property (nonatomic, strong) NSString * _Nonnull icon;@property (nonatomic, strong) NSString * __nonnull icon;*//*在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之间,定义的所有对象属性和方法默认都是nonnull*/// 方法中,关键字书写规范
/**- (nonnull NSString *)test:(nonnull NSString *)str;- (NSString * _Nonnull)test1:(NSString * _Nonnull)str;*///@property (nonatomic, assign) int age;/*null_resettable: get:不能返回为空, set可以为空// 注意;如果使用null_resettable,必须 重写get方法或者set方法,处理传递的值为空的情况// 书写方式:@property (nonatomic, strong, null_resettable) NSString *name;*//*_Null_unspecified:不确定是否为空书写方式只有这种方式一@property (nonatomic, strong) NSString *_Null_unspecified name;方式二@property (nonatomic, strong) NSString *__null_unspecified name;*/@end@implementation ViewController//- (void)setName:(NSString *)name
//{
// if (name == nil) {
// name = @"123";
// }
// _name = name;
//}
//- (NSString *)name
//{
// if (_name == nil) {
// _name = @"123";
// }
// return _name;
//}// iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值
// 好处:
// 1.迎合swift
// 2.提高我们开发人员开发规范,减少程序员之间交流// 注意:iOS9新出关键字nonnull,nullable只能修饰对象,不能修饰基本数据类型
//- (UIView *)view
//{
// if (_view == nil) {
// [self loadView];
// [self viewDidLoad];
// }
//
// return _view;
//}
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.// _Null_unspecified:// self setName:(NSString * _Nullable)}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end


__kindof
 

// __kindof:相当于,表示某个类或者他的子类。

// 设计模型中可以使用,当给某个类提供类方法,想让外界调用能看到创建什么对象,并且不报警告。

//
// ViewController.m
// 02-iOS9新特性之泛型
//
// Created by yz on 15/10/20.
// Copyright © 2015年 yz. All rights reserved.
//#import "ViewController.h"#import "Person.h"#import "IOS.h"
#import "Java.h"@interface ViewController ()// 定义泛型:确定类型
@property (nonatomic, strong) NSMutableArray *array;@end@implementation ViewController// 泛型:限制类型// 开发中使用场景:
// * 限制集合中的类型,注意:只能检测方法的调用,因为声明的泛型,只能放在方法中
// * 当一个类在声明的时候,某个对象的属性不确定,只有创建对象的时候才确定,可以使用泛型// 泛型书写格式:放在类型后面,表示限制这个类型.// 好处:
// 提高程序员开发规范,减少交流成本。
// 从数组或者字典取值,都是id类型,不能调用点语法,但是使用泛型,就可以了。// 自定义泛型:模仿数组// 需求:假设有个Person,这个人会编程语言,但是在定义的时候不确定,只有在创建对象的时候才确定。
// language属性的类型就有讲究了
// id 类型:表示可以传任何对象
// Launguage类型,在赋值的时候没有提示
// 泛型,声明泛型,在创建对象的时候,确定泛型,在赋值就有提示了。// 泛型中协变,逆变,用于转换类型
// 默认带有泛型的变量,互相赋值有报警告,使用协变,逆变,就能解决.
// 协变(__covariant): 向上转型, 子类转父类
// 逆变(__contravariant):向下转型 父类转子类- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.Person *person = [[Person alloc] init];// person.language = [[IOS alloc] init];Person *person1 = [[Person alloc] init];// Person = Person1;(协变)//person1 = person;(逆变)// person1.language = [[Language alloc] init];}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{}@end

 


转:https://my.oschina.net/zhaodacai/blog/673300



推荐阅读
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • Java多线程实现:从1到100分段求和并汇总结果
    本文介绍如何使用Java编写一个程序,通过10个线程分别计算不同区间的和,并最终汇总所有线程的结果。每个线程负责计算一段连续的整数之和,最后将所有线程的结果相加。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • JSOI2010 蔬菜庆典:树结构中的无限大权值问题
    本文探讨了 JSOI2010 的蔬菜庆典问题,主要关注如何处理非根非叶子节点的无限大权值情况。通过分析根节点及其子树的特性,提出了有效的解决方案,并详细解释了算法的实现过程。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • #print(34or4 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
author-avatar
别喷我我还小_216
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有