-1

完全披露,我不是专业的程序员。实际上,我是一个外科项目的居民,在我的研究期间,我对编程产生了兴趣,这得益于最近 Ipad 在临床实践中使用的增加。换句话说,请原谅任何无知或坏习惯,因为这不是我通常的领域,我已经为这个问题苦苦挣扎了一段时间。

我正在编写一个小应用程序来做一些与我的临床实践相关的特定计算。基本要点是我正在使用一个选项卡式应用程序,其中至少有两个选项卡和每个选项卡的单独视图控制器。对于我的应用程序,我创建了一个对象来执行所有计算并管理所有患者数据。我的问题在于我似乎无法找到一种策略来让所有视图控制器都可以访问我创建的类的实例来进行计算和管理数据。我尝试将实例的初始化放在 appdelegate m 文件中并将其导入每个控制器,但这会给我重复声明带来的多个错误。我尝试将它放在一个视图控制器的 m 文件中,然后将它导入到第二个视图控制器中,但编译错误相同。我'

无论如何,我可能会采用这种策略完全错误,但如果这是可能的或替代策略的任何方向,将不胜感激。另外,也许我读错了编译器错误:

重复符号 _OBJC_IVAR_$_AppDelegate._window 在:/Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate。 o /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/FirstViewController.o 重复符号 _OBJC_METACLASS_$_AppDelegate 在: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate。o /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/FirstViewController.o 重复符号 _OBJC_CLASS_$_AppDelegate 在: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer /Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/FirstViewController.o重复符号_OBJC_IVAR_$_AppDelegate._window在:/Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer /Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/SecondViewController.o 重复符号_OBJC_METACLASS_$_AppDelegate 在:/Users/Joshua/Library/Developer/ Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate。o /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/SecondViewController.o 重复符号 _OBJC_CLASS_$_AppDelegate 在: /Users/Joshua/Library/Developer/Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/AppDelegate.o /Users/Joshua/Library/Developer /Xcode/DerivedData/NutritionAppAlpha-cgnuaytpdjbxqfediwqybepqfbte/Build/Intermediates/NutritionAppAlpha.build/Debug-iphonesimulator/NutritionAppAlpha.build/Objects-normal/i386/SecondViewController.o ld:架构i386 clang的6个重复符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看

4

1 回答 1

4

处理这个问题的最简单方法是共享实例设计模式。假设您要分享的课程名为Calculator

//Calculator.h
@interface Calculator : NSObject

+ (instancetype)sharedCalculator;

@end

为了实现共享实例,我们使用static关键字来确保我们始终使用同一个对象。

//Calculator.m
@implementation

+ (instancetype)sharedCalculator
{
    static Calculator sharedInstance = nil;
    if (!sharedInstance)
    {
        sharedInstance = [[Calculator alloc] init];
    }
    return sharedInstance;
}

@end

现在,在任何需要使用计算器的地方,您只需使用[Calculator sharedCalculator]而不是创建该类的新实例。

于 2013-11-05T20:57:41.770 回答