Xcode 14 UNUSABLE: New IBOutlet properties not recognized in Interface Builder


Leo
 

Is it just me - or Xcode 14 is simply unusable at this point? Because new IBOutlet properties are not recognized in Interface Builder.

(Outlets created in pre-14 Xcode versions do appear in Xcode 14 but with a warning sign  with a tooltip claiming that outlet doesn't exist).

To reproduce, create a new outlet in the header file of the app delegate class (or any other class instantiated in Interface Builder):

@property (nonatomic, retain) IBOutlet NSButton *testButton;

then select this class in Interface Builder and open the Connections Inspector.

The testButton outlet will NOT appear in the list of outlets.

This naturally makes Xcode 14 totally useless at this point.

Bug is submitted to Apple.

I wonder if there are users who do not experience this behavior?

Thanks,
Leo


Andy Lee
 

I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.

I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle.  I have never liked that way of doing it but it worked.

--Andy

On Oct 6, 2022, at 5:21 AM, Leo <leo.r@...> wrote:

Is it just me - or Xcode 14 is simply unusable at this point? Because new IBOutlet properties are not recognized in Interface Builder.

(Outlets created in pre-14 Xcode versions do appear in Xcode 14 but with a warning sign  with a tooltip claiming that outlet doesn't exist).
To reproduce, create a new outlet in the header file of the app delegate class (or any other class instantiated in Interface Builder):
@property (nonatomic, retain) IBOutlet NSButton *testButton;
then select this class in Interface Builder and open the Connections Inspector.
The testButton outlet will NOT appear in the list of outlets.
This naturally makes Xcode 14 totally useless at this point.
Bug is submitted to Apple.
I wonder if there are users who do not experience this behavior?

Thanks,
Leo


James Walker
 

On Oct 6, 2022, at 2:21 AM, Leo <leo.r@...> wrote:

Is it just me - or Xcode 14 is simply unusable at this point? Because new IBOutlet properties are not recognized in Interface Builder.
I tried your steps to reproduce, and it didn't reproduce for me. I'm running macOS 12.6 on a Mac with an Intel CPU.

By the way, I thought I read somewhere that the current recommended way of declaring an outlet is with @property (strong)?


Leo
 

On Thu, Oct 6, 2022 at 09:49 AM, James Walker wrote:
I tried your steps to reproduce, and it didn't reproduce for me. I'm running macOS 12.6 on a Mac with an Intel CPU.

By the way, I thought I read somewhere that the current recommended way of declaring an outlet is with @property (strong)?
I have to add a correction: the problem only happens on macOS Ventura (latest beta). There's no issue on macOS 12.6.

I was too confident that the system version wouldn't affect this - definitely was wrong.

As to strong then my code is non-ARC so it's the same as retain as far as I understand.


Leo
 

On Thu, Oct 6, 2022 at 08:01 AM, Andy Lee wrote:
I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.
 
I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle.  I have never liked that way of doing it but it worked.
As you probably saw in my follow-up post today, the problem actually only happens for me on Ventura. No issues on macOS 12.6.

I wonder if you do have the issue on a non-Ventura system?

Leo


Andy Lee
 

I saw it on Ventura too.  I'm on the road and don't have a non-Ventura machine handy to confirm, but it sounds like a Ventura thing.  It wouldn't be the first oddly-specific bug I've seen on Ventura.

--Andy

On Oct 7, 2022, at 12:34 AM, Leo <leo.r@...> wrote:

On Thu, Oct 6, 2022 at 08:01 AM, Andy Lee wrote:
I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.
 
I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle.  I have never liked that way of doing it but it worked.
As you probably saw in my follow-up post today, the problem actually only happens for me on Ventura. No issues on macOS 12.6.

I wonder if you do have the issue on a non-Ventura system?

Leo


Gary L. Wade
 

How does it work with X14.1b3 and m13b10?
--
Gary

On Oct 10, 2022, at 12:50 PM, Andy Lee via groups.io <aglee@...> wrote:

I saw it on Ventura too.  I'm on the road and don't have a non-Ventura machine handy to confirm, but it sounds like a Ventura thing.  It wouldn't be the first oddly-specific bug I've seen on Ventura.

--Andy

On Oct 7, 2022, at 12:34 AM, Leo <leo.r@...> wrote:

On Thu, Oct 6, 2022 at 08:01 AM, Andy Lee wrote:
I noticed that too, and assumed *I* was doing something wrong or was not up to date on how IB works.
 
I was able to make the connection in the opposite direction, by right-clicking the target and using the little circle.  I have never liked that way of doing it but it worked.
As you probably saw in my follow-up post today, the problem actually only happens for me on Ventura. No issues on macOS 12.6.

I wonder if you do have the issue on a non-Ventura system?

Leo


Leo
 

The problem is NOT yet fixed in Xcode 14.1 RC2 on macOS 13.0.

I'm also downloading macOS 13.1 beta - will see if it makes any difference.

I wonder how Apple managed to screw this one up. It's not some kind of a minor obscure bug that's easy to miss. It's one of the main functions - and this bug totally breaks any development in Xcode on Ventura. (Well at least in Objective-C - I don't know if it affects Swift).


Gary L. Wade
 

What’s the bug ID number?
--
Gary

Bug is submitted to Apple.


Leo
 

FB11655575


Leo
 

On Thu, Oct 27, 2022 at 08:40 PM, Leo wrote:
I'm also downloading macOS 13.1 beta - will see if it makes any difference.
Now can confirm that macOS 13.1 beta does NOT solve the issue.


Jack Brindle
 

While this _may_ be a bug (certainly a change from previous versions) it hardly breaks any development in a project. There are at least two other (actually preferred) method to do the same thing.
1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.
2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.

These were actually in place before the method you point out was created and may be considered the preferred methods.

While I would like for Apple to reinstate this method, it definitely does not break application development in Xcode.

Jack


On Oct 27, 2022, at 10:40 PM, Leo <leo.r@...> wrote:

The problem is NOT yet fixed in Xcode 14.1 RC2 on macOS 13.0.

I'm also downloading macOS 13.1 beta - will see if it makes any difference.

I wonder how Apple managed to screw this one up. It's not some kind of a minor obscure bug that's easy to miss. It's one of the main functions - and this bug totally breaks any development in Xcode on Ventura. (Well at least in Objective-C - I don't know if it affects Swift).


Leo
 

On Fri, Oct 28, 2022 at 01:50 PM, Jack Brindle wrote:
1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.
2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.
Well, you can't use any of these methods as well as any other methods.

The bug is that Interface Builder does not recognize any outlets at all. Outlets DO NOT APPEAR in Interface Builder at all - so there's nothing to connect.

And if you attempt to Ctrl-drag from the outlet entry in the code directly onto an object in IB (open in a split editor), IB doesn't let you connect the outlet to any object.

So the bug is that OUTLETS ARE DEAD, there's simply no way to use them on Ventura no matter what method you use.

I'm curious if your experience on Ventura is different?


Thanks,
Leo


Jack Brindle
 

Quite a bit different. IBOutlets are working just fine for me, and they show up as expected in Interface Builder. The _only_ thing not working is attempting to connect _from_ the object element _to_ the owning object. As I explained, going there other way works just fine.
This has been true with all of the Xcode 14.1 betas & ICs in both Monterey and Ventura, including the current 13.1 beta.
I also make extensive use of KVO from IB to object properties, which also works just fine.

I would ask, what is different with your setup?

Jack


On Oct 28, 2022, at 4:23 PM, Leo <leo.r@...> wrote:

On Fri, Oct 28, 2022 at 01:50 PM, Jack Brindle wrote:
1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.
2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.
Well, you can't use any of these methods as well as any other methods.

The bug is that Interface Builder does not recognize any outlets at all. Outlets DO NOT APPEAR in Interface Builder at all - so there's nothing to connect.

And if you attempt to Ctrl-drag from the outlet entry in the code directly onto an object in IB (open in a split editor), IB doesn't let you connect the outlet to any object.

So the bug is that OUTLETS ARE DEAD, there's simply no way to use them on Ventura no matter what method you use.

I'm curious if your experience on Ventura is different?


Thanks,
Leo


Leo
 

Interesting...

There's nothing special about my setup. It's a clean Ventura install (plus some Adobe Creative Cloud and Office apps installed). This partition was created especially to test Ventura.

I wonder what machine are you using?

Mine is MacBook Pro M1 Pro 16", 2021.


Mark Allan
 

OK, so I just upgraded to macOS 13 and Xcode 14 and for my project it works absolutely fine - in both directions.

Have you tried clearing out the derived data directory?

Mark

On 29 Oct 2022, at 12:25 am, Jack Brindle via groups.io <jackbrindle@...> wrote:

Quite a bit different. IBOutlets are working just fine for me, and they show up as expected in Interface Builder. The _only_ thing not working is attempting to connect _from_ the object element _to_ the owning object. As I explained, going there other way works just fine.
This has been true with all of the Xcode 14.1 betas & ICs in both Monterey and Ventura, including the current 13.1 beta.
I also make extensive use of KVO from IB to object properties, which also works just fine.

I would ask, what is different with your setup?

Jack


On Oct 28, 2022, at 4:23 PM, Leo <leo.r@...> wrote:

On Fri, Oct 28, 2022 at 01:50 PM, Jack Brindle wrote:
1) Right-click (or option-click) on the file’s owner object in the left Interface Builder pane, select the outlet and drag to the object you wish to connect.
2) Select file’s owner object in the left pane, then select the outlet in IB’s Connection inspector and drag to the object you wish to connect.
Well, you can't use any of these methods as well as any other methods.

The bug is that Interface Builder does not recognize any outlets at all. Outlets DO NOT APPEAR in Interface Builder at all - so there's nothing to connect.

And if you attempt to Ctrl-drag from the outlet entry in the code directly onto an object in IB (open in a split editor), IB doesn't let you connect the outlet to any object.

So the bug is that OUTLETS ARE DEAD, there's simply no way to use them on Ventura no matter what method you use.

I'm curious if your experience on Ventura is different?


Thanks,
Leo



Leo
 

On Sat, Oct 29, 2022 at 03:49 PM, Mark Allan wrote:
OK, so I just upgraded to macOS 13 and Xcode 14 and for my project it works absolutely fine - in both directions.
Have you tried clearing out the derived data directory?
Clearing derived data doesn't make any difference.

On the same machine, there're no issues with Xcode 14 when booting in Monterey.


I also found out the following after testing Xcode 14 on Ventura:

-If I create a new project from scratch, the outlet properties I initially create are recognized by Interface Builder.

-However, after relaunching Xcode all outlets disappear in Interface Builder (exactly the same issue as in all existing projects).

I wonder what machine are you using?

Mine is MacBook Pro M1 Pro 16" 2021 



Mark Allan
 

On 30 Oct 2022, at 12:37 am, Leo <leo.r@...> wrote:

-If I create a new project from scratch, the outlet properties I initially create are recognized by Interface Builder.

-However, after relaunching Xcode all outlets disappear in Interface Builder (exactly the same issue as in all existing projects).

I wonder what machine are you using?

Mine is MacBook Pro M1 Pro 16" 2021
I wonder if it's maybe an architecture thing. The computer I've updated is a 2019 Intel Core i7 MacBook Pro. Unfortunately I'm not in a position to update my M1 Mac yet as it's my primary development machine and I need to stay on macOS 12 for a while yet.

Mark


Leo
 

Ha. I installed Ventura on a different partition of the same MacBook Pro - and outlets work in Xcode 14 there with no issues.

It means to me that the bug is somewhere there hiding, waiting for the right conditions to happen. But, hopefully, it must be extremely rare.


Gary L. Wade
 

Please update your feedback report with this information. It sounds like it might be a permissions issue off the top of my head.
--
Gary L. Wade
http://www.garywade.com/

On Nov 1, 2022, at 4:54 PM, Leo <leo.r@...> wrote:



Ha. I installed Ventura on a different partition of the same MacBook Pro - and outlets work in Xcode 14 there with no issues.

It means to me that the bug is somewhere they’re hiding, waiting for the right conditions to happen. But, hopefully, it must be extremely rare.