我有一个自定义容器UIViewController,它有六个子UIViewControllers,以及一组用户与之交互以在子视图控制器之间切换的选项卡.问题是当我的容器视图控制器被释放时,子视图控制器不是.
我已经验证通过向dealloc方法添加一些调试代码而不释放子视图控制器,只要它们的视图没有添加到容器视图控制器的视图中,它们就会被释放.
下面是我用来创建自定义容器视图控制器的代码的摘录.viewController指针是iVars.我也在使用ARC,这就是为什么没有实际的发布调用.
- (void)init
{
if ((self = [super init])) {
vc1 = [[UIViewController alloc] init];
[self addChildViewController:vc1];
vc2 = [[UIViewController alloc] init];
[self addChildViewController:vc2];
vc3 = [[UIViewController alloc] init];
[self addChildViewController:vc3];
vc4 = [[UIViewController alloc] init];
[self addChildViewController:vc4];
vc5 = [[UIViewController alloc] init];
[self addChildViewController:vc5];
vc6 = [[UIViewController alloc] init];
[self addChildViewController:vc6];
}
return self;
}
- (void)dealloc
{
[vc1 removeFromParentViewController];
vc1 = nil;
[vc2 removeFromParentViewController];
vc2 = nil;
[vc3 removeFromParentViewController];
vc3 = nil;
[vc4 removeFromParentViewController];
vc4 = …Run Code Online (Sandbox Code Playgroud) 我有一个具有TestFlight构建方案的iOS应用程序.在这个方案中,我在"运行"选项卡中设置了一个名为TESTFLIGHT的环境变量,其值为1.此外,在构建方案的"配置文件"选项卡中,它选中了"使用RUn操作的参数和变量"选项,并在列表中看到相应的EV.
从Xcode运行应用程序时这很好用,但是当我在我的设备上进行存档并运行应用程序时,环境变量TESTFLIGHT不存在.我的问题是我在这里缺少一个选项/方案标签?
EV在"运行"选项卡上设置,并为调试构建配置选择.我是否需要更改此版本才能发布?
谢谢你们!
简而言之,我正在尝试使用后台队列将从Web服务中提取的JSON对象保存到Core Data Sqlite3数据库.保存发生在我通过GCD创建的序列化后台队列中,并保存到为该后台队列创建的NSManagedObjectContext的辅助实例中.保存完成后,我需要使用新创建/更新的对象更新主线程上的NSManagedObjectContext实例.我遇到的问题是主线程上的NSManagedObjectContext实例无法找到保存在后台上下文中的对象.以下是我正在使用代码示例执行的操作列表.对我做错了什么的想法?
.
// process in the background queue
dispatch_async(backgroundQueue, ^(void){
if (savedObjectIDs.count > 0) {
[savedObjectIDs removeAllObjects];
}
if (savedObjectClass) {
savedObjectClass = nil;
}
// set the thead name
NSThread *currentThread = [NSThread currentThread];
[currentThread setName:VS_CORE_DATA_MANAGER_BACKGROUND_THREAD_NAME];
// if there is not already a background context, then create one
if (!_backgroundQueueManagedObjectContext) {
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_backgroundQueueManagedObjectContext = [[NSManagedObjectContext alloc] init];
[_backgroundQueueManagedObjectContext setPersistentStoreCoordinator:coordinator];
}
}
// save the JSON dictionary starting …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我从 Godaddy 获得的 SSL 证书安装到我的 NGINX 服务器上。我很确定我的所有路径都是正确的,并且据我所知,我的服务器配置是正确的,但仍然出现以下错误。
Feb 20 11:06:35 my.server.com nginx[6173]: nginx: [emerg] cannot load certificate "/etc/ssl/certs/certificate.crt": BIO_new_file() failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/certs/certificate.crt','r') error:2006D002:BIO routines:BIO_new_file:system lib)
Feb 20 11:00:01 my.server.com nginx[5969]: nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
下面是我的 SSL 配置。我已将其放入路径中的文件中/etc/nginx/conf.d/ssl.conf。
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name my.server.com;
root /usr/share/nginx/html;
ssl_certificate /etc/ssl/certs/certificate.crt;
ssl_certificate_key /etc/ssl/private/private.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block. …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Sugar ORM(v 1.3)集成到我的Android应用程序中,并且在尝试保存新创建的实体时我不断遇到崩溃(NullPointerException).
这是我的崩溃......
01-21 06:02:36.012 2856-2856/com.spuddmobile.kel E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.spuddmobile.kel, PID: 2856
java.lang.NullPointerException
at com.orm.SugarRecord.save(SugarRecord.java:109)
at com.orm.SugarRecord.save(SugarRecord.java:45)
at com.spuddmobile.kel.Fragments.NewAppFragment._SaveForm(NewAppFragment.java:231)
at com.spuddmobile.kel.Fragments.NewAppFragment.onMenuItemSelection(NewAppFragment.java:175)
at com.spuddmobile.kel.Activities.MainActivity.onOptionsItemSelected(MainActivity.java:89)
at android.app.Activity.onMenuItemSelected(Activity.java:2600)
at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1012)
at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:546)
at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是我的AppManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spuddmobile.kel" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="com.orm.SugarApp"
android:theme="@style/AppTheme" >
<meta-data …Run Code Online (Sandbox Code Playgroud) 我正在制作一个利用 AVFoundation 录制视频的示例应用程序。重点是让我可以更好地控制视频的录制方式。在我的示例项目中,我有视频捕获,但正在努力正确处理方向。
我在网上做了很多搜索,发现其他人建议我不应该允许我的捕获视图或捕获会话根据方向旋转,而是设置转换以在播放期间旋转视频。我在 iOS 和 Mac 设备上运行良好,但我想知道我是否会在其他平台(如 Windows 或 Android)上遇到问题。
此外,当我查看录制视频的元数据时,我发现宽度和高度没有正确设置为方向。这是有道理的,因为我只是在转换视频的呈现方式,而不是它的实际分辨率。
我的问题是如何正确支持纵向和横向并在视频文件输出中正确反映?我需要这些视频在所有平台上都能正确播放,所以我认为分辨率很重要。
以下是我迄今为止所写的完整来源。我很感激你们能提供的任何建议。
import UIKit
import AVFoundation
class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate, AVCaptureAudioDataOutputSampleBufferDelegate {
//MARK: - Outlet
@IBOutlet weak var previewView: UIView!
@IBOutlet var playStopButton: UIButton!
//MARK: - Private Variables
let videoQueue = DispatchQueue(label: "VideoQueue", qos: .background, attributes: .concurrent, autoreleaseFrequency: .workItem, target: nil)
private let captureSession = AVCaptureSession()
var outputUrl: URL {
get {
if let url = _outputUrl {
return url
}
_outputUrl = outputDirectory.appendingPathComponent("video.mp4")
return _outputUrl!
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用核心图框架来创建带有图例的条形图.这一切都有效,除了图例复制了条形图每个部分中的列(请参阅随附的屏幕截图).

我查看了核心情节类引用,但无法找到解决此问题的任何内容.我试图将CPTLegend属性numberOfColumns设置为1,将numberOfRows设置为3,并使图例在图例中显示相应数量的项目,但它显示的数据不正确.

下面是我用来构建条形图的代码.你们对我如何解决这个问题有什么建议吗?我假设这不是核心情节的错误,而是传说的局限性,我希望有一个解决方法.
// Create barChart from theme
barChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
[barChart applyTheme:theme];
chartView.hostedGraph = barChart;
barChart.plotAreaFrame.masksToBorder = NO;
barChart.paddingLeft = 60.0;
barChart.paddingTop = 10.0;
barChart.paddingRight = 0.0;
barChart.paddingBottom = 30.0;
//find max y
int maxY = 0;
NSMutableArray *maxDrillDownData = [chartData.drillDownData objectForKey:DRILLDOWN_EQUIPMENT_ALL_TYPE];
for (NSMutableArray *dataArray in maxDrillDownData) {
maxY = dataArray.count>maxY?dataArray.count:maxY;
}
//add buffer
maxY = maxY+100;
// Add plot space for horizontal bar charts
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)barChart.defaultPlotSpace;
plotSpace.yRange = …Run Code Online (Sandbox Code Playgroud)