可能重复:
为什么某些可可方法中的参数列表以nil结尾?
当我定义这样的方法时,我必须输入一个nil/NULL/0来表示那些变量参数的结束,如何stringWithFormat:实现这样就不需要这样做了?
pax*_*blo 11
因为stringWithFormat:使用格式本身来确定它需要多少个参数.
有两种基本方法(处理变量参数列表).
首先要事先告诉我有多少个参数,无论是长度还是类似格式字符串.这方面的例子是:
int arr[] = {6, 3, 1, 4, 1, 5, 9};
// ^
// |
// +--- number of elements following.
Run Code Online (Sandbox Code Playgroud)
要么:
NSString *message = [NSString stringWithFormat: @"Your age is %d", age];
// ^
// |
// only one format element ---+
Run Code Online (Sandbox Code Playgroud)
第二个是哨兵价值,比如你nil/NULL/0最后的价值:
int arr[] = {3, 1, 4, 1, 5, 9, -1};
// ^
// |
// marks end of data ---+
Run Code Online (Sandbox Code Playgroud)
现在,显然,只有当你能区分真实数据和哨兵值时,哨兵方法才有效(在上述情况下很容易,因为PI的数字都是0到9之间的正数).
从技术上讲,我猜你也可以将它们组合起来(例如每组具有哨兵值的组数),但我没有经常在野外使用过.
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |