我以编程方式创建了几个表,并且代码已经运行了好几年.两周前我上次运行时没有发出任何警告.我已经更新到iOS 8.3,现在我为每个UITableViewController收到三个警告.
超类'-initWithStyle:'的指定初始值设定项的方法覆盖未找到.
超类'-initWithCoder的指定初始值设定项的方法覆盖:'未找到.
超类"-initWithNibName:bundle:"的指定初始值设定项的方法覆盖:未找到.
初始化表的代码对于我的所有表都是类似的:
- (instancetype)initInManagedObjectContext:(NSManagedObjectContext *)context
withScoreKeeper:(ScoreKeeper *)scorer
withWordList:(WordList *)wordlist {
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
_mObjContext = context;
_scoreKeeper = scorer;
_wordList = wordlist;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
而.h看起来像这样:
@interface SettingsTableViewController : UITableViewController {
UIPopoverController *popover;
}
- (instancetype)initInManagedObjectContext:(NSManagedObjectContext *)context
withScoreKeeper:(ScoreKeeper *)scorer
withWordList:(WordList *)wordlist NS_DESIGNATED_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)
我以为我通过调用self = [super initWithStyle:UITableViewStyleGrouped];来覆盖指定的初始化程序,但我想编译器现在有其他想法.
那么如何覆盖指定的初始化程序?
我在这个问题中暗示了我的问题的答案,所以我认为答案是禁用我的UIToolbar视图的自动布局.
据说适用于视图的代码是
cButton.translatesAutoresizingMaskIntoConstraints = YES;
Run Code Online (Sandbox Code Playgroud)
但我不确定它是否适用于我的代码,因为UIToolbar不会从UIView继承.
我有很多小图像,我在游戏中使用不同大小,具体取决于设备和方向.当Apple推出新设备时,我决定先制作一张160x160的图像,然后在使用时调整大小,而不是拥有大量不同的图像,并添加新图像.这在iOS 4 - iOS 10中运行良好,但在iOS 11中失败.
代码非常简单:
// Get the image
NSString *pictFile = [[NSBundle mainBundle] pathForResource:@"Correct" ofType:@"png"];
UIImage *imageToDisplay = [UIImage imageWithContentsOfFile:pictFile];
UIImage *cImage = [UIImage imageWithCGImage:imageToDisplay.CGImage scale:[UIScreen mainScreen].scale orientation:imageToDisplay.imageOrientation];
UIButton *cButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cButton setImage:cImage forState:UIControlStateNormal];
[cButton setTitle:@"c" forState:UIControlStateNormal];
//set the frame of the button to the size of the image
cButton.frame = CGRectMake(0, 0, standardButtonSize.width, standardButtonSize.height);
//create a UIBarButtonItem with the button as a custom view
c = …Run Code Online (Sandbox Code Playgroud) 如果这很明显,我不是 perl 程序员所以很抱歉。我正在使用的系统上有一个我想修改的 perl 包,但我不知道还有哪些其他程序在使用它。我可以看出至少有三个 cron 作业使用它,因为我将这些行放入文件中:
open(STDOUT, '>', "/var/log/SS_logs/packageAlert.log");
open(STDERR, '>', "/var/log/SS_logs/packageAlert.error.log");
print "\nThe program packageAlert.pm is running on " . `date` . "\n";
Run Code Online (Sandbox Code Playgroud)
10 分钟后,我的日志中出现了三行。可能会有更多人每天或每周调用它,也可以在网页中调用它。
我用grep -R "SS::alert"搜索了包的出现。所以要知道有 20 个左右的脚本和网页可能会使用这个包。
有没有我可以调用的函数来找出哪个文件调用了包?
这个问题不是针对SQL注入攻击的保护.StackOverflow已经多次回答了这个问题,我已经实现了这些技术.这是关于停止尝试.
最近我的网站受到大量注射攻击.现在,我捕获它们并返回一个静态页面.
这是我的URL的样子:
/products/product.php?id=1
Run Code Online (Sandbox Code Playgroud)
这就是攻击的样子:
/products/product.php?id=-3000%27%20IN%20BOOLEAN%20MODE%29%20UNION%20ALL%20SELECT%2035%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C%27qopjq%27%7C%7C%27ijiJvkyBhO%27%7C%7C%27qhwnq%27%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35--%20
Run Code Online (Sandbox Code Playgroud)
我确信这不仅仅是一个糟糕的链接或胖指法打字,所以我不想将它们发送到概述页面.我也不想在我的网站上使用任何提供静态页面的资源.
我正在考虑让页面死掉die().这种方法有什么问题吗?或者是否有我可以使用PHP设置的HTML返回代码更合适?
编辑:
基于以下几条评论,我查找了如何返回"找不到页面".icktoofay的Stack Overflow 回答建议使用404然后使用die(); - 机器人认为没有页面甚至可能会消失,并且没有更多的资源用于显示页面未找到的消息.
header("HTTP/1.0 404 Not Found");
die();
Run Code Online (Sandbox Code Playgroud) 我需要为iPhone X调整我的视图,但我无法弄清楚何时初始化safeAreaInsets.根据文件,
如果视图当前未安装在视图层次结构中,或者在屏幕上尚未显示,则此属性中的边缘插入为0.
我认为当调用viewDidLoad时,将设置值,但事实并非如此.我可以在调用viewDidLayoutSubviews时获取值,但这似乎为时已晚并且无论如何都不会返回正确的值.
任何人都可以向我解释如何使用safeAreaInsets属性吗?
我需要在没有主页按钮的设备上运行游戏时调整区域.
我可以通过它们的尺寸识别所有iDevices,但新的iPad 12.9"尺寸与旧尺寸相同.
这段代码有效,但我正在寻找一些不依赖于名称的未来证据.有什么想法吗?
if ( [ [[UIDevice currentDevice] name] isEqualToString: @"iPad Pro (12.9-inch) (3rd generation)" ] ) {
device = LFDeviceTypePadPro12_9;
}
Run Code Online (Sandbox Code Playgroud) 我已经浏览了几次斯坦福iOS课程,并了解他们使用的所有示例.我已经从Apple网站上阅读了很多文档和十几个例子,但是我错过了重用代码的策略 - 这应该是面向对象语言的一个特性.
我有一大堆代码可以在屏幕上放置录制按钮和播放按钮.与按钮关联的代码仅用于显示.选择器处于开启按钮可处理录制,存储和播放.我想在屏幕上有三组这些按钮.在PHP中,我只将50行代码放在一个包含文件中,在javascript中我可能会编写一个函数来显示它们.在对象世界中,我不知道最好的方法是什么.
我会使用UIView类,如果是这样,我如何让视图显示在舞台上?我可以像我一样使用默认目标C类进行记分,但后来我有关于如何将按钮放到舞台上的相同问题.
感谢您的评论,但#import指令与PHP中的include_once不同.
至少有三种方法可以使用include_once.
最简单的方法是使用它在一个或多个站点的多个页面上包含文本.例如,您可能有一个hours.inc文件,其中包含办公时间和技术支持号码.然后,您可以将此文件包含在网站的联系人,支持和页面上.如果您更改小时数,则在一个文件中更改它们.
与第一次使用相关的是具有该站点的全局变量的文件.例如$ company_name ="我们的公司".$ company_phone ="800-555-1212"等
该文件将与header.inc和footer.inc一起使用.在这种用途中,它更像是某些语言所谓的宏替换.
但PHP最强大的用途是根据一些输入生成代码.在我的许多网站上,我有一个PHP包含文件,可根据产品ID生成数十个产品页面.页面本身只有几行,
我可以阅读此页面并确切知道发生了什么.我很难跟踪我的观点中发生的事情,当他们长达800行时.
这是一种非常有用的语言功能,我无法想象它不是目标C的一部分.我无法弄清楚的是如何做到这一点.我确定它涉及创建某种类的类,以保持代码重用,但我看过的所有示例都没有这样做.
require_once('set_variables.inc.php');
require_once('./header.inc');
$page = mysql_real_escape_string($_GET['p']);
if (file_exists("pages/$include_page") ) {
require_once("pages/$include_page");
} else {
require_once("pages/missing.inc");
}
require_once('./footer.inc');
所以我正在寻找的是暗示Objecive-C如何实现这个PHP功能:
$number_of_button_sets = 3;
inlcude_once('buttons');
我有一个包含420个NSA阵列文字的文件.每个阵列都有10到200个NSStrings.文件大小为988 KB.
当编译器不进行优化时,它可以构建并运行良好.但是,当我尝试制作存档时,它会挂起"分析86个文件中的86个".我怀疑是因为编译器在优化文件时遇到困难.我将文件分成两部分,它将在大约一个小时的编译后存档.
我将数组放入字典中,然后返回我想要的一个数组.我认为这就是编译器的问题.
-- 420 NSArrays ...
NSArray *foils_easy = [NSArray arrayWithObjects:a_easy, about_easy, ... you_easy, your_easy, nil];
NSArray *keys = @[@"a", @"about", ... @"you", @"your"];
NSDictionary *allFoils = [NSDictionary dictionaryWithObjects:foils_easy forKeys:keys];
return [allFoils objectForKey:target];
Run Code Online (Sandbox Code Playgroud)
我不需要字典,除了确定返回哪个数组.有没有办法构造数组名称,以便可以返回?也许像你这样的东西可以用来在屏幕上放置图像?
NSString *foregroundImageName = [NSString stringWithFormat:@"%@ForegroundL1", scene];
Run Code Online (Sandbox Code Playgroud)
我真的不想投入420'if'语句所以我希望有更好的解决方案.