相关疑难解决方法(0)

Objective-C 2.0中的可选参数?

在Objective-C 2.0中,是否可以创建一个参数是可选的方法?也就是说,您可以进行如下方法调用:

[aFraction print];
Run Code Online (Sandbox Code Playgroud)

以及:

[aFraction print: someParameter];
Run Code Online (Sandbox Code Playgroud)

在同一个程序中.

Apple的Objective-C 2.0编程语言指南将Obj-C与Python进行了对比,似乎说这是不允许的.我还在学习,我想确定.如果它可能的,那么什么是语法,因为我的第二个代码示例不起作用.

更新: 好的,我刚刚制作了两个方法,都命名为"print".

-(void) print;
-(void) print: (BOOL) someSetting; 
Run Code Online (Sandbox Code Playgroud)

履行

-(void) print {
    [self print:0];
}

-(void) print: (BOOL) someSetting {
    BOOL sv;
    sv = someSetting;

    if ( sv ) {
        NSLog(@"cool stuff turned on");
    }
    else {
        NSLog(@"cool stuff turned off");
    }
}
Run Code Online (Sandbox Code Playgroud)

相关的计划行

    ...
    printParamFlag = TRUE;

// no parameter
    [aCodeHolder print];

// single parameter
    [aCodeHolder print:printParamFlag];
    ...
Run Code Online (Sandbox Code Playgroud)

我无法相信这有效.我有什么理由不这样做吗?

objective-c

52
推荐指数
4
解决办法
5万
查看次数

如何在Objective C中使用多个param调用Swift初始化方法

我在我的Swift文件中有一个Initializer方法,如下所示:

public init(frame: CGRect, type: NVActivityIndicatorType? = nil, color: UIColor? = nil, padding: CGFloat? = nil) {
        self.type = type ?? NVActivityIndicatorView.DEFAULT_TYPE
        self.color = color ?? NVActivityIndicatorView.DEFAULT_COLOR
        self.padding = padding ?? NVActivityIndicatorView.DEFAULT_PADDING
        super.init(frame: frame)
        isHidden = true
}
Run Code Online (Sandbox Code Playgroud)

我想从我的Objective-C文件中调用此方法,但在编译时抛出它的错误.

错误:

/ Users/Desktop/old data/ChatScreenViewController.m:396:92:'NVActivityIndi​​catorView'没有可见的@interface声明选择器'initWithFrame:type:color:padding:'

Obj-C调用代码:

NVActivityIndicatorView *objNVActivityIndicatorView = [[NVActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) type:NVActivityIndicatorTypeLineScalePulseOut color:[UIColor blueColor] padding:10]
Run Code Online (Sandbox Code Playgroud)

我试过的:

Objective-C在我的快速课程中添加

@objc public final class NVActivityIndicatorView: UIView
Run Code Online (Sandbox Code Playgroud)

仍然无法访问上述方法.

我的Swift文件:NVActivityIndi​​catorView.swift

任何想法出了什么问题?

提前致谢!

objective-c initializer swift

6
推荐指数
1
解决办法
2623
查看次数

标签 统计

objective-c ×2

initializer ×1

swift ×1