读 UIViewController Class Reference 的笔记

本文深入探讨了UIViewController在iOS应用中的角色与管理方式,包括如何通过属性判断其在tabbar或navbar中的位置,如何创建和初始化viewcontroller,以及在不同场景下正确处理内存管理和视图层次关系。此外,文章还介绍了viewcontroller的关键方法和属性,如view、initWithNibName:bundle:、loadView、viewDidLoad等,并提供了实际应用示例。
1.因为在应用中view controller直接的关系是很复杂的,所以每一个view controller都有一些属性用于指示它是否在被其他的view controller 管理。我们可以查看一个view controller的tabBarController 或者navgationController属性来得知此view controller是嵌入到一个tab bar还是一个navgation bar中。也可以用view controller的parentViewController属性来得到它的parent controller。 

2.当我们定义了一个新的UIViewController的子类,我们必须具体的指定此viewcontroller的view,有两种方法可以用来指定。手动的或者使用nib文件。如果手动的,必须实现loadView方法,在方法实现中给view属性赋值;如果使用nib文件,我们不能去覆盖loadView方法,而是用Interface Builder 创建nib file,然后初始化view controller 用方法initWithNibName:bundle:。 

3.一个view controller是它view以及相关联的subview的唯一拥有者。他有责任创建这些view,并在适当的时间释放它们,包括在低内存的条件下或者view controller在released的时候。如果views存储在nib file中,每一个view controller会在nib file中创建view 的copy;然而通过手动的创建view,我们永远不要在多个view controller中使用相同的view对象。(If you store your views in a nib file, each view controller object creates its own copy of the view in that nib file. However, if you create your views manually, you should never use the same view objects with multiple view controllers.) 

4.当按照层次创建views时,我们应该总是设置views的autoresizing properties 。当一个view controller显示在屏幕上时,它的root view经常调整自己的大小以适合可用空间,这个空用空间主要依赖于窗口当前的方向和以及其他一些界面元素的展现,如状态栏。可以通过 Interface Builder 设置autoresizing properties或者通过程序的方式改变每一个view的utoresizesSubviews 和autoresizingMask 属性。如果应用程序支持纵向和横向,设置这些熟悉是非常重要的。在方向改变时,系统使用这些属性去重新定位和调整view。 

5.view controller通过didReceiveMemoryWaring方法,在其内存不足时,自动调用,其release一些不需要的内存。在3.0之前这是唯一的方法在你自定义的view controller中释放多余的内存,但是在3.0之后,方法viewDidUnload可能是一个恰当合适的地方来做你需要的。 
当低内存发生时,UIViewController会清除掉它的views,如果他认为这些views能够重新reload或者重新创建。如果发生这种情况,它会调用viewDidUnload方法给代码一个机会去放弃和view hierarchy有关的任何对象的所有权。包括从nib file加载的对象,通过viewDidLoad方法创建的对象,在运行时创建的并加在view hierarchy 中的对象。通常,如果view controller包括outlets,我们应该用viewDidUnload方法去放弃这些outlets的拥有权,或者其他不再需要的和view 相关的data。 

6.多方向旋转的支持在此不再讲述。 

7.一些重要的方法,属性 
(1)用nib file创建一个view controller 
  - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle 
  返回一个在指定的bundle中的nib file的新的初始化的view controller。 
  nibBundle是在制定的束中找nib 文件,如果是nil,则在主束里面寻找。 
     nib file不会立即加载,当你访问view controller的view时,它才会第一次加载。如果想在load之后进行一些其他的初始化时,覆盖viewDidLoad方法,在此方法中进行。 
    如果nibName为nil时,我们必须重写loadView方法,在此方法中创建views 
    如果在初始化的时候,没有指定nib文件的名字,也没有覆盖loadView方法,view controller会按照自己的方法寻找nib文件。 
(2)view属性 
   此值默认为nil,如果你访问此属性,但是他当前的值为nil,view controller会自动的调用loadView方法,返回resulting view。缺省的loadView会尝试从nib文件中load view,如果view controller没有连接nib文件,则需要重写loadView方法创建root view 和其他的sub views。 
在低内存的情况下或者当view controller 最后释放时,UIViewController会自动的设置此属性为nil。 
(3)- (void)loadView 
  永远不要直接的调用此方法,view会在view属性请求但是为nil的情况下调用。如果手动的创建views,需要重写此方法,如果在Interface Builder中创建,绝对不能重写此方法。 
  缺省的此方法的实现是寻找一个有效的nib文件去load相应的文件。如果没有具体的nib,则缺省实现是创建一个plain UIView。 
  如果我们重写此方法手动的创建views,在实现中应该给view属性赋值,自定义的实现不应该调用super方法。 
(4)- (void)viewDidLoad 
  当controller 的view加载到内存之后才调用此方法。 
  无论view是在nib file中load还是在loadView中程序创建,此方法都会调用。 
(5)title属性 
   A localized string that represents the view that this controller manages. 


(6)viewWillAppear 
     viewDidAppear 
     viewWillDisappear 
     viewDidDisappear 
如果重新这些方法一定要调用super方法。 
(7)wantsFullScreenLayout 
一个BOOlean值指示是否允许view覆盖状态栏。 
正常的情况下,view的frame不会覆盖设备的状态栏。 
(8)parentViewController 

   返回当前view controller的parent

转自:http://lizaochengwen.iteye.com/blog/1189929

该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值